我是编程的新手,我已经阅读了一些关于可变对象和深层复制的内容,并且根据我的理解,一种方法来制作一个"深层复制"是使用 init 方法(如果是类),所以当我创建一个新对象时,他们不会共享在那里实例化的数据。但我仍然不明白为什么会发生以下情况。
class Board:
def __init__(self, *args):
if len(args) == 2:
self.matrix = args[0]
else:
self.matrix = args[0].matrix
def change_matrix(self):
self.matrix[0][0] += 1
def print_board(self):
for i in self.matrix:
print("( ", end="")
for j in i:
print(str(j) + " ", end="")
print(")")
print("")
board = [
[3, 5, 6],
[4, 0, 1],
[2, 8, 7]
]
x = Board(board, 0)
y = Board(x)
y.change_matrix()
x.print_board()
y.print_board()
print_board()这是我制作的方法给了我:
>>>( 4 5 6 )
>>>( 4 0 1 )
>>>( 2 8 7 )
>>>( 4 5 6 )
>>>( 4 0 1 )
>>>( 2 8 7 )
据我所知,因为我正在制作"矩阵" in" init"当y被创建时,它应该为每个对象创建一个新的方向,我缺少什么?