Python shallow/deep 复制错误

Python shallow/deep copy error

不,这不是重复的。

我有以下 类: -木板 -玩家

实例化播放器时,它会为该播放器创建一个新的棋盘对象。

我有一个切换当前和潜在玩家的功能:

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是字符串,board是将被复制的class实例,但是它更深一层,所以不会被deepcopy复制。 Deepcopy 不是递归的意思。