What a curious assignment.

Mike Meyer mwm at mired.org
Wed Nov 23 06:02:44 CET 2005


"Neil.Jin at gmail.com" <Neil.Jin at gmail.com> writes:

> [test 1]
>>>> class A:
> ...    i = 1
> ...
>>>> a = A()
>>>> A.i
> 1
>>>> a.i
> 1
>>>> A.i = 2
>>>> A.i
> 2
>>>> a.i
> 2
>>>>
>
> [test2]
>>>> class A:
> ...    i = 1
> ...
>>>> a = A()
>>>> A.i
> 1
>>>> a.i
> 1
>>>> a.i = 2
>>>> A.i
> 1
>>>> a.i
> 2
>>>>
>
> Is there somthing wrong????

No. Reading a.i looks up i by checking the instance (a), then the
class (A), so a.i and A.i are the same thing. So changing A.i changes
the value seen by a.i. Binding a.i binds i to a, not A, so after the
binding, a.i and A.i are different things.

         <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.



More information about the Python-list mailing list