我今天碰到了一个有趣的python错误,在这个错误中,反复实例化一个类似乎是保持状态的。在以后的实例化调用中,变量已被定义。
我将这个问题归结为下面的类/外壳交互。我知道这不是初始化类变量的最佳方法,但它的行为肯定不应该是这样的。这是一个真正的bug还是一个“特性”?:天
测试者.py:class Tester():
def __init__(self):
self.mydict = self.test()
def test(self,out={}):
key = "key"
for i in ['a','b','c','d']:
if key in out:
out[key] += ','+i
else:
out[key] = i
return out
Python提示:Python 2.6.6 (r266:84292, Oct 6 2010, 00:44:09)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
>>> import tester
>>> t = tester.Tester()
>>> print t.mydict
{'key': 'a,b,c,d'}
>>> t2 = tester.Tester()
>>> print t2.mydict
{'key': 'a,b,c,d,a,b,c,d'}