不,这不是复制品。在
我有以下几门课: -董事会 -玩家
当Player被实例化时,它为该Player创建一个新的board对象。在
我有一个可以切换当前和潜在玩家的功能:
from copy import deepcopy
switch_players(self):
temp_val = deepcopy(self.current_player)
# self.current_player = None
self.current_player = deepcopy(self.latent_player)
# self.latent_player = None
self.latent_player = deepcopy(temp_val)
temp_val = None
当我调用self.current_player.name
时,这对玩家的名字很有效,但是当我使用self.current_player.board.display
或写入它时,它为两个玩家引用同一个棋盘。在
我甚至添加了一些代码来创建一个deepcopy()
的板来进行这样的切换,但是我仍然遇到了同样的问题。这样做是不是根本上是错误的?或者这种方法是正确的,我应该在代码的其他地方查找?(我有另一种方法来做这件事,但我不明白为什么目前这种方法行不通的理论。)
它是这样工作的,因为name是string,board是要复制的类实例,但它是更深一层的,所以不会用deepcopy复制。Deepcopy不是递归的。在
相关问题 更多 >
编程相关推荐