元のオブジェクトの完全なコピーを作成しようとして Python ディープ コピーを使用していましたが、ディープ コピーはコピーを作成していないようでした。元のオブジェクトと同じ参照を共有していますが、これは望ましくありません。
これがコードです。を持っておりclass Board
、そのインスタンスをディープ コピーします。
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.
では、古いボードのディープ コピーを作成するにはどうすればよいでしょうか。ローカルのものを変更し、古いものをそのまま維持したいので、参照を共有したくありません..