我有这个非常烦人的问题而且不知道为什么会这样。 我有这门课:
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概念。
可以在课堂上附加或更新哪种解决方案?不创建时态变量,然后更新该变量并写入字典或列表。
答案 0 :(得分:1)
您创建了类变量而不是实例变量。检查一下:Instance vs Class Variables
答案 1 :(得分:1)
__init__()
目前
my_dict = {}
和my_list = []
在整个班级之间共享
如果你添加
def __init__(self, name):
self.my_dict = {};
然后它应该解决问题