Unclear On Class Variables
harold fellermann
harold.fellermann at upf.edu
Thu Jan 13 07:45:36 EST 2005
Hi Tim,
If you have
class Foo(object) :
x = 0
y = 1
foo = Foo()
foo.x # reads either instance or class attribute (class in this case)
foo.x = val # sets an instance attribute (because foo is instance not
class)
Foo.x = val # sets a class attribute
foo.__class.__x = val # does the same
this might be sometimes confusing. IMHO, the following is especially
nasty:
>>> foo = Foo()
>>> foo.x += 1
>>>
>>> print foo.x
1
>>> print Foo.x
0
although the += operator looks like an inplace add it isn't.
it is just syntactic sugar for foo.x = foo.x + 1.
- harold -
On 13.01.2005, at 07:18, Tim Daneliuk wrote:
> I am a bit confused. I was under the impression that:
>
> class foo(object):
> x = 0
> y = 1
>
> means that x and y are variables shared by all instances of a class.
> But when I run this against two instances of foo, and set the values
> of x and y, they are indeed unique to the *instance* rather than the
> class.
>
> It is late and I am probably missing the obvious. Enlightenment
> appreciated ...
> --
> -----------------------------------------------------------------------
> -----
> Tim Daneliuk tundra at tundraware.com
> PGP Key: http://www.tundraware.com/PGP/
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
--
Everyone is a genius.
It's just that some people are too stupid to realize it.
More information about the Python-list
mailing list