2017-10-18 155 views
1

我是python的新手,更習慣於C++。我想創建實例的列表,並做了以下內容:python中的類實例列表

from copy import deepcopy 

class C: 
    c1="" 
    c2="" 

Cs=[] 
C.c1="Hello" 
C.c2="World" 
Cs.append(deepcopy(C)) 

C.c1="Why" 
C.c2="this?" 
Cs.append(deepcopy(C)) 

for c in Cs: 
    print (c.c1, c.c2) 

我期待下面的輸出:

Hello World 
Why this? 

,但得到:

Why this? 
Why this? 

爲什麼不工作的深層副本?

+0

順便說一句,你沒有做任何'C'類的實例。 Python類對C++有點不同。 –

回答

2

只有一個(在Java/C++意義上爲static)c1和c2變量的副本。閱讀https://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide並在代碼中添加更多self以解決問題。

+0

感謝您指出本教程。我從副本導入改變了我的代碼 deepcopy的 C類: 通 CS = [] IC = C() iC.c1 = 「你好」 iC.c2 = 「世界」 銫。 append(deepcopy(iC)) iC.c1 =「爲什麼」 iC.c2 =「this?」 Cs.append(deepcopy的集成電路(IC)) 對C在CS: 打印(c.c1,c.c2​​)' 這是在python做這樣的事的最佳方法是什麼? – PyNewbie