Class v. Instance variables in Python
Joe Strout
joe at strout.net
Mon Nov 10 17:17:13 EST 2008
On Nov 10, 2008, at 2:44 PM, Zane Selvans wrote:
> However, one (and only one) of these instance variables is behaving
> mysteriously like a class variable: all instances of the class are
> sharing a single copy of the variable, located at the same place in
> memory.
>
> Is there a common mistake that can result in this behavior, that
> doesn't involve using class variables - I really have absolutely
> nothing defined in the class except for methods. The problem shows
> up regardless of how I name the instance variables (i.e. using name
> mangling __names or not). The problematic variable consists of a
> list of objects of type Lineament (the same object class as the one
> that's giving me problems).
How are you creating your list? You need to make sure that each
instance creates its very own list object, something like:
self.foo = []
rather than grabbing a reference to some shared list instance, such as
one defined as a default argument to your __init__ method.
HTH,
- Joe
More information about the Python-list
mailing list