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