python中的深度复制

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]

我正在使用Python deep copy尝试创建原始对象的总副本,但deep copy似乎没有创建副本。它仍然与原始对象共享相同的引用,这是不需要的

这是密码。我有一个
类板
,我想深度复制它的实例

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 = []