Bug in __init__?

Zbigniew Braniecki zbigniew.braniecki at gmail.com
Fri Jan 18 12:09:47 EST 2008


I found a bug in my code today, and spent an hour trying to locate it 
and then minimize the testcase.

Once I did it, I'm still confused about the behavior and I could not 
find any reference to this behavior in docs.

testcase:

class A():

   def add (self, el):
     self.lst.extend(el)

   def __init__ (self, val=[]):
     print val
     self.lst = val


def test ():
   x = A()
   x.add(["foo1","foo2"])
   b = A()


So, what I would expect here is that I will create two instances of 
class A with empty self.lst property. Right?

In fact (at least with my Python 2.5)

gandalf at gandalf-desktop:~/projects/pyl10n$ ./scripts/test.py
[]
['foo1', 'foo2']

This bug does not happen when I switch to __init__ (self, *args) and 
assign self.lst= args[0].

Any clue on what's going on here, and/if where I should report it?

Greetings
Zbigniew Braniecki



More information about the Python-list mailing list