On Nov 28, 7:19 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > Hello everybody, > > I've banged my ahead around for a while trying to figure out why > multiple instances of a class share the same instance variable. I've > stripped down my code to the following, which reproduces my problem. > > class Test(object): > def __init__(self, v=[]): > self.values = v > > def addValue(self, v): > self.values += [v] > return > > a = Test() > a.addValue(1) > print a.values # Should print [1] > b = Test() > print b.values # Should print empty list > b.addValue(2) > print a.values # Should print [1] > > The output I get is: > > [1] > [1] > [1, 2] > > The output I am expecting is: > > [1] > [] > [1] > > Another strange thing is that if I initialize with a different value, > the new instance will not share the 'values' attribute with the other > two: > > c = Test([9]) > print c.values # Prints [9] as it should > print a.values # Still prints [1, 2] > > There is something I clearly don't understand here. Can anybody > explain? Thanks!
http://www.python.org/doc/faq/general/#why-are-default-values-shared-between-objects http://docs.python.org/tut/node6.html#SECTION006710000000000000000 -- http://mail.python.org/mailman/listinfo/python-list