Steven Bethard <[EMAIL PROTECTED]> writes: > Mac wrote: >> Is there a nice Python idiom for constructors which would expedite >> the following? >> class Foo: >> def __init__(self, a,b,c,d,...): >> self.a = a >> self.b = b >> self.c = c >> self.d = d >> ... > > py> class Foo(object): > ... def __init__(self, a, b, c, d): > ... params = locals() > ... del params['self'] > ... self.__dict__.update(params) > ... > py> vars(Foo(1, 2, 3, 4)) > {'a': 1, 'c': 3, 'b': 2, 'd': 4} > > Just make sure that "params = locals()" is the first line in > __init__ method. (Otherwise you might have other local variables > slip in there.)
Or write it like this, using Python's dynamic code execution: #v+ class A: def __init__(self, a, b, c, d): initial = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4} for param in initial.keys(): exec "self.%s = initial['%s']" % (param, param) #v- -- http://www.peter.dembinski.prv.pl -- http://mail.python.org/mailman/listinfo/python-list