initializing with empty list as default causes freaky problems

Reckoner reckoner at gmail.com
Mon Jul 27 13:40:03 EDT 2009


Hi,

Observe the following:

In [202]: class Foo():
   .....:     def __init__(self,h=[]):
   .....:         self.h=h
   .....:
   .....:

In [203]: f=Foo()

In [204]: g=Foo()

In [205]: g.h
Out[205]: []

In [206]: f.h
Out[206]: []

In [207]: f.h.append(10)

In [208]: f.h
Out[208]: [10]

In [209]: g.h
Out[209]: [10]

The question is: why is g.h updated when I append to f.h?  Shouldn't
g.h stay []?

What am I missing here?

I'm using Python 2.5.1.

Thanks in advance.



More information about the Python-list mailing list