Python浅/深拷贝

2024-05-13 18:13:20 发布

您现在位置:Python中文网/ 问答频道 /正文

不,这不是复制品。在

我有以下几门课: -董事会 -玩家

当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()的板来进行这样的切换,但是我仍然遇到了同样的问题。这样做是不是根本上是错误的?或者这种方法是正确的,我应该在代码的其他地方查找?(我有另一种方法来做这件事,但我不明白为什么目前这种方法行不通的理论。)


Tags: 方法代码selfboardnone玩家valcurrent