我在一个类中有这两个函数
Class A(object):
my_dict{"a":1, "b":2, "c":3}
def set_dict(self,key,value):
self.my_dict[key] = value
def set_dict2(self,dict):
self.my_dict= dict
然后我创建一个类对象
obj1 = A()
obj1.set_dict("a",4)
obj1.set_dict("b",5)
obj1.set_dict("c",6)
obj2 = A()
obj2.set_dict("a",7)
obj2.set_dict("b",8)
obj2.set_dict("c",9)
如果我做上述操作,obj1和obj2都有{a:7,b:8,c:9},因为obj1也被对obj2所做的最新更改所改变。但如果你这样做的话,效果还可以:
obj1 = A()
obj1.set_dict2({"a":4, "b":5, "c":6})
obj2 = B()
obj2.set_dict2({"a":7, "b":8, "c":9})
所以问题是做set_dict()
有什么不对?你知道吗
这是因为
my_dict
是一个类变量。当您说my_dict[key] = value
时,您是在类中修改字典,而不是在变量中修改字典。你知道吗为了更清楚,让我们看看这个控制台会话:
所以,你改变了
A.my_dict
而不是a.my_dict
。要解决此问题,需要将其作为实例变量:希望这有帮助!你知道吗
您需要将myu dict设置为实例变量,例如:
相关问题 更多 >
编程相关推荐