Class Variables (Python 2.2/2.3)

Peter Otten __peter__ at web.de
Sat Aug 23 10:02:45 EDT 2003


srijit at yahoo.com wrote:

> Hello Members,
> I do not see any direct mention of class variables in new style
> classes. Only class methods. Have I missed or is it trivial? If not,
> how to define/implement class variables for new style classes?

>From my practical point of view, there are no differences between old and
new style classes in this respect:

def printThem():
    for t in t1, t2, t3:
        print t.name, "=", t.color
    print

#the same goes for class Test(object): ...
class Test:
    color = "blue"
    def __init__(self, name):
        self.name = name

t1 = Test("t1")
t2 = Test("t2")
t3 = Test("t3")

# class atttribute are accessed like instance attributes
printThem() #blue, blue, blue

# class attributes are shaded by instance attributes, 
# which makes them good default values
t1.color = "red"
printThem() #red, blue blue

# class attributes are not copied on instantiation
Test.color = "green"
printThem() #red, green, green

And now let the experts speak up on the subtler aspects :-)

Peter




More information about the Python-list mailing list