Strange Behavior

abcd codecraig at gmail.com
Mon Oct 16 10:26:05 EDT 2006


class Foo:
    def __init__(self, name, data=[]):
        self.name = name
        self.data = data

    def addData(self, val):
        self.data.append(val)


f = Foo('a')
f.addData(1)
f.addData(2)

f2 = Foo('b')

print f.name, f.data
print f2.name, f2.data

----------------------------
OUTPUT
---------------------------
a [1, 2]
b [1, 2]


....why would f and f2 contain the same data??

however, if I do this instead....

f = Foo('a')
f.addData(1)
f.addData(2)

f2 = Foo('b', [])

print f.name, f.data
print f2.name, f2.data

----------------------------
OUTPUT
---------------------------
a [1, 2]
b []


Any ideas?  is this a bug?




More information about the Python-list mailing list