Using metaclassed to dynamically generate a class based on a parameter to the objects init function.
Hi I'd like to use metaclasses to dynamically generate a class based on a parameter to the objects init function. 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) The above sample won't work but I hope it demonstrates what I'm trying to do. -- http://mail.python.org/mailman/listinfo/python-list
Re: Using metaclassed to dynamically generate a class based on a parameter to the objects init function.
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
mirroring object attributes using xml-rpc
Hi Say I have a class like the following class Test: i = 1 def geti(self): return self.i And I use it in an xml-rpc server like this: t = Test() s.register_instance(t) Then the client code can get the value of i like this: c = xmlrpclib.ServerProxy("address") c.geti() but why can't I get the value of i like this? c.i How can I implement such behaviour? Moreover, if there were more member objects in the class Test, how can tell the client 1) that these attributes exist and 2) how can I use them from the client side without having to resort to defining a function get_xxx() in the server class? -- http://mail.python.org/mailman/listinfo/python-list
Re: mirroring object attributes using xml-rpc
Just to make things clearer the problem I have is if I do this: c = xmlrpclib.ServerProxy("http://somewhere";) c.i I get this error: So how do I fake things so that xmlrpc knows not to try and call i but gets the value of i instead? -- http://mail.python.org/mailman/listinfo/python-list