Unexpected Python Behavior

Simon Wittber simonwittber at gmail.com
Fri Sep 24 09:55:33 CEST 2004


For the first time, I have been bitten by Python. The below code
produces the results:
False
True

when I initially expected the results:
False
False

It took me a while to work out that default keyword argument values
are likely only evaluated once, which caused the empty dict to be
shared across classes...

It certainly something newbie python coders should look out for!

Simon W.

---snip-here---

class X(object):
    def __init__(self, d={}):
        self.d = d

a = X()
b = X()

print a is b
print a.d is b.d

---snip-here---



More information about the Python-list mailing list