Op 2005-11-04, Steven D'Aprano schreef <[EMAIL PROTECTED]>: > On Fri, 04 Nov 2005 09:03:56 +0000, Antoon Pardon wrote: > >> Op 2005-11-03, Steven D'Aprano schreef <[EMAIL PROTECTED]>: >>> On Thu, 03 Nov 2005 13:01:40 +0000, Antoon Pardon wrote: >>> >>>>> Seems perfectly sane to me. >>>>> >>>>> What would you expect to get if you wrote b.a = b.a + 2? >>>> >>>> I would expect a result consistent with the fact that both times >>>> b.a would refer to the same object. >>> >>> class RedList(list): >>> colour = "red" >>> >>> L = RedList(()) >>> >>> What behaviour would you expect from len(L), given that L doesn't have a >>> __len__ attribute? >> >> Since AFAICT there is no single reference to the __len__ attribute that >> will be resolved to two different namespace I don't see the relevance. > > Compare: > > b.a += 2 > > Before the assignment, instance b does not have an attribute "a", so class > attribute "a" is accessed. You seem to be objecting to this inheritance.
I object to the inheritance in a scope where b.a also refers to the instance. If there is no problem that a reference can refer to different objects in the same scope, then the following should work too. a = 0 def f(): a += 2 One can reason just the same that before the assignment f doesn't have a local variable yet, so the global should be accessed. People who don't agree don't want functions to have access to outer scope variables. > Do you object to import searching multiple directories? > > Why do you object to attribute resolution searching multiple namespaces? I don't. >> I don't see the relevance of these pieces of code. In none of them is >> there an occurence of an attribute lookup of the same attribute that >> resolves to different namespaces. > > Look a little more closely. In all three pieces of code, you have a > conflict between the class attribute 'ls' and an instance attribute 'ls'. No you look a little more clearly. > In the first scenario, that conflict is resolved by insisting that > instances explicitly define an attribute, in other words, by making > instance attribute ONLY search the instance namespace and not the class > namespace. No it isn't. You seem unable to make a difference between a resolution in general, and a resolution in a scope where an assignment has been made. -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list