Metaclasses and class variables

Kent Johnson kent37 at
Thu Aug 4 15:47:49 CEST 2005

Christopher Subich wrote:
> Jan-Ole Esleben wrote:
>> class Meta(type):
>>   def __new__(cls, name, bases, d):
>>     d['classvar'] = []
>>     return type.__new__(cls, name, bases, d)
> The problem is that __new__ is called upon object construction, not 
> class definition, but you're trying to set the class variables at 
> definition-time.

The metaclass __new__() is called on class creation (the class is the object being constructed) but not until after the body of the class definition is executed; the dictionary passed to __new__() contains the methods and class variables defined by the class statement.



More information about the Python-list mailing list