Re: Automatic class attribute
- From: Kirk McDonald <mooquack@xxxxxxxx>
- Date: Fri, 03 Feb 2006 14:49:27 -0800
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
.
- Follow-Ups:
- Re: Automatic class attribute
- From: Franck PEREZ
- Re: Automatic class attribute
- References:
- Automatic class attribute
- From: Franck PEREZ
- Automatic class attribute
- Prev by Date: import numeric crashes python.exe
- Next by Date: Re: MySQLdb question... using table name as arg
- Previous by thread: Automatic class attribute
- Next by thread: Re: Automatic class attribute
- Index(es):
Relevant Pages
|