2017-10-18 12 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

c1とc2変数のコピーが1つしかありません(Java/C++の意味ではstatic)。 https://www.toptal.com/python/python-class-attributes-an-overly-thorough-guideを読んでコードにselfを振って修正してください。

+0

このチュートリアルを指摘してくれてありがとう。 パス のCs = [] IC = C() iC.c1 = "こんにちは" iC.c2 = "世界" のCs:私は クラスC deepcopyコピーインポートから に私のコードを変更しました。追加(deepcopy(iC)) iC.c1 = "なぜ" iC.c2 = "これ?" Cs.append cに対する Csに(deepcopy(IC)): プリント(c.c1、c.c2) ' これはPythonで、そのようなことをやっての好ましい方法ですか? – PyNewbie

関連する問題