--- Lonnie Princehouse <[EMAIL PROTECTED]> wrote: > IIRC, the self.__dict__.update(locals()) trick confuses psyco. > > But you can make a decorator to achieve the same result. There's not > really a convincing case for extending python syntax.
Not if you have (enough memory for) psyco. :) I am doing C++ extensions by hand; did quite a lot of them. Anything that helps in pushing back the point where I have to move from Python to C++ is highly appreciated. That's probably the strongest argument for the (self, self.x, ...) approach. I believe it can be made more efficient than any other solution. But see also the two other arguments: http://mail.python.org/pipermail/python-list/2005-July/289721.html > def attribute_decorator(f): > import inspect > argnames = inspect.getargspec(f)[0] > def decorator(*args, **keywords): > bound_instance = args[0] > for name, value in zip(argnames[1:], args[1:]): > setattr(bound_instance, name, value) > return f(*args, **keywords) > return decorator > > #--------- example use: > > class foo(object): > @attribute_decorator > def __init__(self, thing): > print "init: self.thing is", repr(self.thing) > > f = foo('hello world') Thanks! Rob Williscroft had a similar suggestion: http://mail.python.org/pipermail/python-list/2005-July/289734.html Does anyone know if there is a way to hide the _ or self_ from the user of the class, i.e. given: class foo(object): @attribute_decorator def __init__(self, x, _y, z): pass can we make it such that the user can still write foo(x=1,y=2,z=3) without the underscore? Cheers, Ralf __________________________________ Discover Yahoo! Use Yahoo! to plan a weekend, have fun online and more. Check it out! http://discover.yahoo.com/ -- http://mail.python.org/mailman/listinfo/python-list