"Russ P." <[EMAIL PROTECTED]> writes: > OK, then how about a special function that could be called from > inside the constructor (or anywhere else for that matter) to > initialize a list of data members. For example, > > self.__set__(host, port, protocol, bufsize, > timeout) > > This would be equivalent to > > self.host = host > self.port = port > # etc. > > I'm not sure if that is technically feasible, but it would cut down > on repetition of names.
It's much more attractive, because it doesn't change the function signature. In fact, here's a variation that doesn't even need a language change:: >>> class Foo(object): ... def __init__(self, spam, eggs, beans): ... self.__dict__.update(dict( ... (name, value) for (name, value) in vars().items() ... if name in ['spam', 'beans'])) ... >>> foo = Foo("some spam", "more eggs", "other beans") >>> foo.spam 'some spam' >>> foo.eggs Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'Foo' object has no attribute 'eggs' >>> foo.beans 'other beans' -- \ "If consumers even know there's a DRM, what it is, and how it | `\ works, we've already failed." —Peter Lee, Disney corporation, | _o__) 2005 | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list