On 2/3/06, Kirk McDonald <[EMAIL PROTECTED]> wrote: > Franck PEREZ wrote: > > Hello all, > > > > Considering the following code : > > > > class C(object): > > ...: observers = [] > > ...: > > ...: @classmethod > > ...: def showObservers(cls): > > ...: print cls.observers > > > > class D1(C): > > ...: observers = [] #could it be moved in C ? > > > > class D2(C): > > ...: observers = [] #could it be moved in C ? > > > > I want each child class of C to have it's own "observers" class attribute. > > > > The code I provided works... but I'd like to avoid typing "observers = > > []" in each child class. > > > > Is it possible to define something in C which would basically mean : > > "for each child class, automatically bind a new list attribute called > > observers" ? > > > > Are metaclasses a way ? Is it possible to avoid them ? > > Thanks a lot, > > Franck > > By an astounding coincidence, I was just working on a similar problem. > Metaclasses can do this, no problem: > > class M(type): > def __init__(cls, name, bases, dict): > cls.observers = [] > > def showObservers(cls): > print cls.observers > > class C(object): > __metaclass__ = M > > class D1(C): pass > class D2(C): pass > > -Kirk McDonald > -- > http://mail.python.org/mailman/listinfo/python-list >
Works great. Thanks a lot. -- http://mail.python.org/mailman/listinfo/python-list