Peter Dembinski wrote: >class A: > def __init__(self, a, b, c, d): > initial = {'a' : a, 'b' : b, 'c' : c, 'd' : d} > for param in initial.keys(): > exec "self.%s = initial['%s']" % (param, param)
This is not a good use case for exec. Use setattr: for param in initial: setattr(self, param, initial[param]) Or better yet, just update the instance dict: self.__dict__.update(initial) But this misses the OP's point. The issues was that the OP didn't want to write a, b, c and d again. Not only does this proposal make you write them again, it makes you write them again twice! STeVe -- http://mail.python.org/mailman/listinfo/python-list