Z
Zbigniew Braniecki
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@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
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@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