我一直在玩deepcopy函数和复制函数,并且我得到了与它们相同的问题。这就像复制是一个引用(或指针)而不是正确的副本。我在Python与数据记录(类)的工作,也许它可能是..我告诉你一个例子:Python copy.deepcopy()函数无法正常工作
>>> import copy
>>> class player1:
... age = 23
... score = 1
>>> class player2:
... age = 14
... score = 2
>>> player3 = copy.deepcopy(player1)
我打印参数。
>>> print player1.age, player1.score
23 1
>>> print player2.age, player2.score
14 2
>>> print player3.age, player3.score
23 1
现在我增加player1数据记录中的得分参数。
>>> player1.score += 3
然后我再次打印结果。
>>> print player1.age, player1.score
23 4
>>> print player2.age, player2.score
14 2
>>> print player3.age, player3.score
23 4
为什么玩家3变了? 我刚刚在player1中增加了一个参数,而不是player3。它是可变的而不是不可变的。
在此先感谢。
我不同意,年龄和评分进行类属性的事实负责观察到的行为;如果player3真的是一个不同的课程,OP将不会有这个问题。我同意他们*应该*是实例属性,但这是不同的。 – DSM
@DSM:是的,同意了。起初我一直沉迷于此,甚至没有看到根本没有阶级实例。我纠正了这一点。 –