[EMAIL PROTECTED] je napisao/la: > Hello, > > > I have a member function with many (20) named arguments > > def __init__(self,a=1,b=2): > self.a=a > self.b=b > > I would like to get rid of the many redundant lines like self.a=a and > set the members automatically. > The list of default arguments could be given like > > def __init__(**kwargs): > arglist={"a":1,"b":2] > > if this makes things easier > > Of course there has to be a check that raises an error in case of an > unknown argument not mentioned in this list. > > > I am sure there is an elegant way how to do this, could you give me any > hints??? > > > Many thanks > > > > Daniel
A simply solution: def __init__(self, a=1, b=2, c=3, ......): for key, val in locals().items(): if key != 'self': setattr(self.__class__, key, val) in addition: def set(self, **kwarg): for key in kwargs: if hasattr(self.__class__, key): setattr(self.__class__, key, kwargs[key]) else: raise .... This solution is appropriate with use of proprieties. For better proprety usage look at http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442418 -- http://mail.python.org/mailman/listinfo/python-list