在API中定义不会共享的变量

时间:2016-04-24 14:03:42

标签: python python-2.7

我正在定义一些基类,我想用这样的默认值添加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}

有没有办法在基类中声明这个变量,这样在更改时它不会影响该类的其他实例?

1 个答案:

答案 0 :(得分:2)

最有可能的方法是将默认字典声明为实例变量。然后,每个实例都可以访问和修改它,而不会影响另一个实例。

class A(object):

     def __init__(self, data):
         self.data = data
         self.d = {'a':None, 'b':None}