python中的深度复制
我正在使用Python deep copy尝试创建原始对象的总副本,但deep copy似乎没有创建副本。它仍然与原始对象共享相同的引用,这是不需要的 这是密码。我有一个python中的深度复制,python,python-2.7,deep-copy,Python,Python 2.7,Deep Copy,我正在使用Python deep copy尝试创建原始对象的总副本,但deep copy似乎没有创建副本。它仍然与原始对象共享相同的引用,这是不需要的 这是密码。我有一个类板,我想深度复制它的实例 import copy class Board: xpos = None opos = None count = None status = [] def __init__(self, size): self.xpos=[0,0]
类板
,我想深度复制它的实例
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'
我想调用另一个函数的某个地方
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.
那么,我如何才能创建旧板的深度副本呢?我不想分享任何参考资料,因为我将对本地参考资料进行修改,并希望保留旧参考资料。您应该从
板定义中删除以下内容:
xpos = None
opos = None
count = None
status = []
并将以下内容添加到其\uuuu init\uuuu()
:
否则,您的所有实例共享相同的状态
,这是类的属性,而不是实例的属性。这与deepcopy以及您为类提供的可变类属性无关。非常感谢,这正是我要找的!!非常感谢,我认为是我的错把实例变量和类变量弄乱了
self.status = []