Reckoner wrote:
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.
This is a FAQ (and *very* common newbie trap)! See:
http://www.python.org/doc/faq/general/#why-are-default-values-shared-between-objects
Gary Herron
--
http://mail.python.org/mailman/listinfo/python-list