2017-02-18 16 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