我实际遇到问题的代码很长,所以我做了一个示例来显示我的问题。
我有两个继承自基类 (BaseClass) 的类。这两个类都向 self.Dict 添加了一些元素。但是,它们似乎会交叉污染元素。我期待 c0.Dict 返回 {'class0': 0} 和 c1.Dict 返回 {'class1': 1}。但是它们都返回 {'class0': 0, 'class1': 1}。他们为什么会交叉感染?
class BaseClass :
def __init__ (self, _dict={}) :
self.Dict = _dict
class Class0 (BaseClass) :
def __init__ (self) :
BaseClass.__init__(self)
self.Dict['class0'] = 0
class Class1 (BaseClass) :
def __init__ (self) :
BaseClass.__init__(self)
self.Dict['class1'] = 1
c0 = Class0()
c1 = Class1()
print c0.Dict
print c1.Dict
最佳答案
你遇到了一个 python 陷阱:可变的默认参数。
http://blog.objectmentor.com/articles/2008/05/22/pythons-mutable-default-problem
class BaseClass :
def __init__ (self, _dict=None) :
self.Dict = _dict or {}
关于python - Python 继承的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005316/