2016-04-24 27 views
0

我定義了一些基礎類的,我想用默認值添加詞典變量這樣的:在API定義變量不會被共享

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

的問題是:當在一個實例與字典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} 

有沒有辦法在基類中聲明這個變量,以便在更改時不會影響其他類的實例?

回答

2

執行此操作的最可能方法是將默認詞典聲明爲實例變量。然後可以通過每個實例訪問和修改它,而不會影響其他實例。

class A(object): 

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