Bruno Desthuilliers wrote: > [EMAIL PROTECTED] wrote: > > Hi > > > > I'd like to use metaclasses to dynamically generate a class based on a > > parameter to the objects init function. > > Do you really need a metaclass for this ? > > > For example: > > > > class MetaThing(type): > > def __init__(cls, name, bases, dict, extra_information): > > super(MetaThing, cls).__init__(name, bases, dict) > > #setup the class based on the parameter extra_information > > > > class Thing: > > __metaclass__ = MetaThing > > def __init__(self, extra_information): > > #Somehow pass extra_information to the MetaThing > > > > extra_information = 1 > > t = Thing(extra_information) > > Why would you want a new *class* here ? > > > The above sample won't work but I hope it demonstrates what I'm trying > > to do. > > Not enough, I'm afraid - unless it's just me being dumb. From what I see > here, you just can add the extra informations on the object in the > initializer. What's your *real* use case ? > >
The extra_information is used in MetaThing to tell it what attributes to add to the class. For example: class MetaThing(type): def __init__(cls, name, bases, dict, extra_information): super(MetaThing, cls).__init__(name, bases, dict) #setup the class based on the parameter extra_information setattr(cls, make_name(extra_information), make_object(extra_information)) Does that clarify things? I might have the wrong approach - I'm new to metaclasses. However I do think the solution to my problem lies with them since I have to dynamically generate a class and metaclasses provide a mechanism for doing this. -- http://mail.python.org/mailman/listinfo/python-list