Nick Coghlan <[EMAIL PROTECTED]> wrote:For bindings, you could just go with standard Python semantics - normal name binding always happens in the innermost scope, so binding a name in a namespace should happen in the directly referenced namespace. Then you can shadow names from outer scopes, and later regain access to them using 'del'.
...which you can't do in "standard Python semantics" - if a name is local, it's local throughout. You can't do that with a namespace object, which is why I think the best semantics for bindings in that case isn't all that clear.
Heh. I was getting two sets of terminology confused. The nested scopes of functions, and the 'fallback to class' of class instances.
It was the latter I actually meant by 'standard Python semantics' for binding in a 'chained' namespace:
Py> class C(object): ... x = 1 ... Py> c = C() Py> c = C() Py> c.x 1 Py> del c.x Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'C' object attribute 'x' is read-only Py> c.x = 2 Py> c.x 2 Py> del c.x Py> c.x 1 Py> del c.x Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: x
(Huh, I wonder why the error message changed second time around)
Cheers, Nick.
-- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.skystorm.net -- http://mail.python.org/mailman/listinfo/python-list