Ralf W. Grosse-Kunstleve wrote: > My initial proposal > (http://cci.lbl.gov/~rwgk/python/adopt_init_args_2005_07_02.html) didn't > exactly get a warm welcome... > > And Now for Something Completely Different: > > class autoinit(object): > > def __init__(self, *args, **keyword_args): > self.__dict__.update( > zip(self.__autoinit__.im_func.func_code.co_varnames[1:], args)) > self.__dict__.update(keyword_args) > self.__autoinit__(*args, **keyword_args) Should be: class autoinit(object): def __init__(self, *args, **keyword_args): for name, value in zip(self.__autoinit__.im_func.func_code. co_varnames[1:], args): setattr(self, name, value) for name, value in keyword_args.items(): setattr(self, name, value) self.__autoinit__(*args, **keyword_args)
Since using setattr will take care of any slots used in other classes. Not all data is stored in the __dict__. For example: class Example(autoinit): __slots__ = 'abc', def __autoinit__(self, a=1, abc=1): print a, abc a = Example(1,2) print a.__dict__ print a.a print a.abc --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list