Creating dynamic objects with dynamic constructor args

Robert Bossy Robert.Bossy at jouy.inra.fr
Tue Mar 25 17:12:50 CET 2008


Greg at bag.python.org wrote:
> I'd like to create objects on the fly from a pointer to the class 
> using:  instance = klass()  But I need to be able to pass in variables 
> to the __init__ method.  I can recover the arguments using the 
> inspect.argspec, but how do I call __init__ with a list of arguments 
> and have them unpacked to the argument list rather than passed as a 
> single object?
>
> ie. class T:
> 	def __init__(self, foo, bar):
> 		self.foo = foo
> 		self.bar = bar
>
> argspec = inspect.argspec(T.__init__)
> args = (1, 2)
>
> ??? how do you call T(args)?
>   
The star operator allows you to do this:
T(*args)


You also can use dict for keyword arguments using the double-star operator:

class T(object):
    def __init__(self, foo=None, bar=None):
       self.foo = foo
       self.bar = bar

kwargs = {'bar': 1, 'foo': 2}
T(**kwargs)


RB




More information about the Python-list mailing list