[Python-Dev] Re: closure semantics
Brett C.
bac at OCF.Berkeley.EDU
Fri Oct 24 21:16:41 EDT 2003
David Eppstein wrote:
> In article <bncf99$366$1 at sea.gmane.org>,
> "Terry Reedy" <tjreedy at udel.edu> wrote:
>
>
>>>A, B, and C *are* instance variables. Why do you think they aren't?
>>
>>What? They are class attributes that live in the class dictionary,
>>not the instance dictionary.
>
>
> They are instance variables on the class object, which is an instance of
> type 'class'.
>
I think the confusion that is brewing here is how Python masks class
attributes when you do an assignment on an instance::
>>> class foo(object):
... A = 42
...
[12213 refs]
>>> bar = foo()
[12218 refs]
>>> bar.A
42
[12220 refs]
>>> bar.A = 13
[12223 refs]
>>> foo.A
42
[12223 refs]
>>> bar.A
13
Python's resolution order checks the instance first and then the class
(this is ignoring a data descriptor somewhere in this chain; for the
details read Raymond's essay on descriptors @
http://users.rcn.com/python/download/Descriptor.htm#invoking-descriptors ).
-Brett
More information about the Python-Dev
mailing list