Faheem Mitha wrote: > Nearly everything behaves the way I would expect, except that setting > x to 12 in A using class_setx at the beginning also sets the value for > x in B. However, the converse (setting x in B using class_setx), does > not change the value in A, which I would consider to be the expected > behavior. > > However, after that the two x variables appear to behave > independently. Can anyone explain to me why this is so?
When you access a class variable B.x before it has been set in B then you see the value from the base class (A.x). Once you have set a separate value in the subclass that takes precedence. Similarly accessing an instance variable b.x first looks in the instance (b), then in the class (B), then in the base class or classes (here A). The lookup stops as soon as it finds a value in any of these locations. -- http://mail.python.org/mailman/listinfo/python-list