On Wednesday January 9, 2008, Kent Johnson wrote:
> James Newton wrote: > > Hi Python Purists! > > > > I want all instances of a given class to share a piece of information, > > but I want to set that information on the fly. I have found that this > > works: > > > > > > class Foo(object): > > # class_variable = None # There is no real need to declare this > > > > def __init__(self): > > print self.__class__.class_variable > > could be just self.class_variable, attributes are looked up in the class > if not found in the instance (that's how method access works, e.g.). Though Kent is correct that the class namespace will be searched when the variable is not found in the instance namespace, I still prefer to use the syntax Foo.class_variable in this context as it makes the code more legible in regard to this being a class variable. The only reason I can imagine using the self.__class__ syntax would be if you expect subclasses to be defined and intentionally want to rely on the subclass namespace rather than Foo. > > def main(): > > Foo.class_variable = "Done" > > Foo() Notice the above change matches the style you are using in main(). Michael _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor