[Tutor] Change to Class-level Variable
alan.gauld at btinternet.com
Mon Oct 4 01:58:18 CEST 2010
"Robert" <webtourist at gmail.com> wrote
>>>> class Foo( object ):
> ... myid = 'Foo'
> ... def __init__( self ):
> ... pass
>>>> f1 = Foo()
>>>> f2 = Foo()
>>>> f1.myid = 'Bar'
This creates a myid instance variable in f1 which hides the class
You should always modify class variables via the class not an instance
(you can read them either way but I prefer to use the class for both
>>>> Foo.myid = 'SPAM'
>>>> f1.myid <----------------------- Why is "f1" not affected
>>>> by the Class variable change ?
Because this is accessing the instance variable not the class one.
You can get at the class variable from the instance usind __class__
but usually you don'tneed to. You know the class in context or you
want the instance data not the class data.
Author of the Learn to Program web site
More information about the Tutor