faqts : Computers : Programming : Languages : Python : Snippets

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

2 of 3 people (67%) answered Yes
Recently 0 of 1 people (0%) answered Yes

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