Creating dynamic objects with dynamic constructor args
Robert Bossy
Robert.Bossy at jouy.inra.fr
Tue Mar 25 12:12:50 EDT 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