[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 <bncf99366ドル$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

AltStyle によって変換されたページ (->オリジナル) /