2017-10-18 6 views
1

Ich bin neu in Python und mehr an C++. Ich möchte eine Liste von Instanzen erstellen und haben die folgenden:Liste der Klasseninstanzen in 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) 

ich erwartet hatte die folgende Ausgabe:

Hello World 
Why this? 

bekam aber:

Why this? 
Why this? 

Warum ist die tiefe Kopie nicht funktioniert ?

+0

BTW, Sie machen keine Instanzen dieser 'C' Klasse. Python-Klassen funktionieren etwas anders als C++. –

Antwort

2

gibt es nur eine (static in der Java/C++ Sinn) Kopie der Variablen c1 und c2. Lesen Sie https://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide und streuen Sie mehr self s in Ihrem Code, um es zu beheben.

+0

Danke, dass Sie auf dieses Tutorial hingewiesen haben. Ich habe meinen Code von Kopie Import geändert deep Klasse C: Pass Cs = [] iC = C() iC.c1 = "Hallo" iC.c2 = "Welt" Cs. append (decopy (iC)) iC.c1 = "Warum" iC.c2 = "this?" Cs.append (deep (iC)) für c in Cs: print (c.c1, c.c2) ' Ist dies der bevorzugte Weg, so etwas in Python zu tun? – PyNewbie

Verwandte Themen