2017-02-18 24 views
-3

我注意到这个问题,我正在做的事情,并设法重现它在一个更简单的形式。Python - 两个类的变量是链接的

问题是我有两个球员 - 两个人类 - 他们都有自己的网格。我从全局网格变量开始,并将每个人的网格分配给该全局变量。但是,当我更换一个人的网格时,另一个人的网格也会发生变化!

下面的代码输出:

Code image

任何人有任何建议,为什么出现这种情况?

编辑:

我试过列表()的建议。这在一个程序中起作用,但是在我的主程序中它没有做任何事情。

Players[1].Grid = list(Grid) 

Players[0].Grid = list(Grid) 

当我改变列表时,这将输出相同的结果。

+2

将文字发布为文字,而不是文字图片。 – melpomene

回答

0

虽然Scovetta的答案没有工作,因为我提供的示例,代码中,我发现这个问题实际上使用的是2维列表,而不是一维一个样本。

我从here发现了更复杂的对象需要

copy.deepcopy 

复制一切,而不只是旧变量的引用。

0

您在两个对象之间共享网格,所以当您更改它时,它们都会看到它。如果您希望每个都有它的副本,请使用list()复制它。

People[a].grid = list(Grid) 
+0

我刚刚发现它不起作用的东西 – Woafer

+0

同意@Woafer,复杂对象需要'deepcopy'。 – Scovetta