Instanzen von Klassen in Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dougal
User
Beiträge: 12
Registriert: Samstag 25. Juli 2009, 16:50

Hallo an Alle!

Ich versteh es einfach nicht, und ich hab mich hier schon einige Zeit an dem Problem festgebissen.

Ich habe folgendes konstruiert:

Klasse F
Klasse X

in Klasse F gibt es die Variable xliste (Datentyp Liste) in der Instanzen von X gespeichert sind.

So nun nehmen wir mal an, dass ich Instanzen von F mit den Namen f1 und f2 erstelle. und ich füge nun Instanzen von X zu f1.xliste zu. Dann tauchen diese Instanzen bei f2.xliste auf.

Wenn ich im Debugger von PyDev bin, dann seh ich, folgendes:

f1.xliste[0] <...object at 0x01367F70>
f1.xliste[1] <...object at 0x01367BF0>

und komischerwiese sind diese Adressen (?!?) die gleichen wie in

f2.xliste, also

f2.xliste[0] <...object at 0x01367F70>
f2.xliste[1] <...object at 0x01367BF0>

Wie stell ich das ab, dass beim Hinzufügen von Instanzen in einer Klasse, die in der anderen auftauchen?!?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Ich vermute mal, daß du 'xliste' als Klassenattribut definiert hast. Dann ist 'xliste' tatsächlich für alle Instanzen von F das selbe Objekt.

Klassenattribute sind aber nur selten das, was man wirklcih will. So sollte es aussehen:

Code: Alles auswählen

class F(object):
    def __init__(self):
        self.xliste = []
Meine Kristallkugel sagt mir, daß es bei dir eher so aussieht:

Code: Alles auswählen

class F(object):
    xliste = []

    def __init__(self): pass
dougal
User
Beiträge: 12
Registriert: Samstag 25. Juli 2009, 16:50

Tatsache... Ja... Du hast recht. Nun klappts... *heul*

DANKE DANKE DANKE DANKE DANKE! DANKE DANKE DANKE DANKE DANKE! DANKE DANKE DANKE DANKE DANKE! DANKE DANKE DANKE DANKE DANKE! DANKE DANKE DANKE DANKE DANKE! DANKE DANKE DANKE DANKE DANKE!
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Ich hab so das Gefühl dass du mit dem Gallileo OpenBook "lernst", weil ich in fast keinem Buch "sowas" gesehen habe, falls du es verwendest nimm lieber ein anderes

http://bj.spline.de/python_openbook.html
the more they change the more they stay the same
Antworten