deep copy in python
本问题已经有最佳答案,请猛点这里访问。
我正在使用python deep copy尝试创建原始对象的总副本,但deep copy似乎没有创建副本。它仍然与原始对象共享相同的引用,这是不需要的
这是密码。我有一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import copy class Board: xpos = None opos = None count = None status = [] def __init__(self, size): self.xpos=[0,0] self.opos=[size-1,size-1] self.count = size*size-2 for i in range(size): tmp = ['-']*size self.status.append(tmp) self.status[0][0] = 'X' self.status[size-1][size-1]= 'O' |
在另一个函数中,我想调用
1 2 3 4 5 | board=Board() localboard=copy.deepcopy(board) # then do modification to local board.... # but it seems the old board is also affected. This is so weird since # I am already using deep copy. |
那么,我如何才能创建一个旧板的深度副本呢?我不想分享任何参考资料,因为我将对本地的进行修改,并希望保持旧的完整。
您应该从
1 2 3 4 | xpos = None opos = None count = None status = [] |
并在其EDOCX1[1]中添加以下内容:
1 | self.status = [] |
否则,您的所有实例都共享同一个