我正在定义一些基类,我想用这样的默认值添加dict变量:
class A(object):
d = {'a':None, 'b': None}
def __init__(self, data):
self.data=data
问题是:当其中一个实例与dict d
交互时,它会影响所有实例。这是一个例子:
In [109]: f = A([1,2,3])
In [110]: ff = A([4,5,6])
In [111]: f.d['a']="hello"
In [112]: ff.d
Out[112]: {'a': 'hello', 'b': None}
有没有办法在基类中声明这个变量,这样在更改时它不会影响该类的其他实例?
答案 0 :(得分:2)
最有可能的方法是将默认字典声明为实例变量。然后,每个实例都可以访问和修改它,而不会影响另一个实例。
class A(object):
def __init__(self, data):
self.data = data
self.d = {'a':None, 'b':None}