Entry
RGB-color class
Jul 5th, 2000 10:00
Nathan Wallace, Hans Nowak, Snippet 149, Python Snippet Support Team
"""
Packages: graphics;oop
"""
""" Module rgb:
Provides a class RGBColor to represent RGB color values. This class will be
used by other modules, like palette.
"""
class RGBColor:
"""A class to represent one RGB color value."""
def __init__(self, red=0, green=0, blue=0):
self.__red = red
self.__green = green
self.__blue = blue
def set(self, red=-1, green=-1, blue=-1):
if red != -1: self.__red = red
if green != -1: self.__green = green
if blue != -1: self.__blue = blue
def __setattr__(self, name, value):
if name in ("red", "green", "blue"):
if value < 0 or value > 255 or type(value) != type(1):
raise 'RGBColor: Color value must be between 0 and 255'
if name == "red": self.__red = value
elif name == "green": self.__green = value
elif name == "blue": self.__blue = value
else:
self.__dict__[name] = value
def __getattr__(self, name):
if name == "red": return self.__red
elif name == "green": return self.__green
elif name == "blue": return self.__blue
def __str__(self):
str = '(red: %d, green: %d, blue: %d)' % (self.__red, self.__green,
self.__blue)
return str
def __repr__(self):
return self.__str__()
def __call__(self):
return (self.__red, self.__green, self.__blue)
def tuple(self):
return self.__call__()
if __name__ == "__main__":
color1 = RGBColor()
print color1
# Assignment
color1.red = 63
color1.blue = 3
print color1
print color1()
color2 = RGBColor(45, 67, 92)
print color2
color2.set(34, 92, 0)
print color2
color2.set(blue=33)
print color2