2014-09-25 64 views
1

我有這個問題,非常討厭,不知道爲什麼會發生。 我有這個類:Python字典和列表裏面的類更新和追加

class Person: 
my_dict = {} 
my_list = [] 
... other attributes 

... 


def add_dic(self, key, val): 
    self.my_dict.update({key: val}) 

def add_to_list(self, i): 
    self.my_list.append(i) 

當我創建這個:

person1 = Person('name1') 
person2 = Person('name2') 

person1.add_dic(1,2) 
person2.add_dic(3,4) 

print person1.my_dict 

#{1:2, 3:4} when to me it should be {1:2} 

爲什麼PERSON1得到與PERSON2的更新更新? person1中的更新會對person2產生影響,同樣的問題也會發生。追加列表時出現同樣的問題。

如何解決此問題以單獨獲取更新?也許有一個我不清楚的Python概念。

什麼解決方案可以追加或更新,但在課堂內?不創建時間變量,然後更新該變量並寫入字典或列表。

回答

1

您創建了類變量而不是實例類。檢查:Instance vs Class Variables

+0

現在我看到我的錯誤...對我來說問題是我認爲它是李在Java中,你把所有的屬性都放在了外面。但實際上在Python中,屬性應該在構造函數中。涼。謝謝 – perseus 2014-09-25 01:32:46

1

什麼是你__init__()

目前 my_dict = {}my_list = []是全班

之間如果添加

def __init__(self, name): 
    self.my_dict = {}; 

那麼就應該解決的問題共享