Komplexe Objekte / Datenstrukturen aufspannen + Pointer

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
ihPyP
User
Beiträge: 58
Registriert: Samstag 4. September 2010, 23:06

Hallo,

ich habe ein Verständnisproblem mit Klassen, welche dynamisch erzeugt werden. In dem Beispielcode, welchen ich unten angehängt habe, möchte ich das Object "MyObject" vom Typ Container mit mehreren "Zonen" (= nZones) anfüllen. Jede Zone ist dabei wieder ein Objekt, welches Methoden etc. enthält.
Ich habe genau dies in meinem Beispielprogramm umgesetzt und musste dabei feststellen, dass Daten in den einzelnen Containern immer wieder überschrieben werden. Ich habe das Verhalten zuerst gar nicht verstanden, denn wenn ich eine Zahl in einer Zone geändert habe, dann wurden "gleichzeitig" mehrere Elemente in "MyObject" verändert. Meiner Meinung nach mache ich etwas mit den Pointern in meinem Programm nicht richtig. Es wäre nett, wenn Ihr dies kurz bewerten und mir eine Korrektur schreiben würdet. Besten Dank

Code: Alles auswählen

class Container:
    def __init__(self):
        self.Zone = list()
# ******************************************************************
class Object1:
    def __init__(self):
        X = list()
# ******************************************************************
class Object2:
    def __init__(self):
        Y = list()
# ******************************************************************
#
# ******************************************************************
MyObject = Container()
#
for z in range(0, nZones):
    if ((z % 2) == 0):
        O1 = Object1()
        MyObject.Zone.append(O1)
    else:
        O2 = Object2()
        MyObject.Zone.append(O2)

... Code um die Felder X und Y in den Zonen aufzuspannen...
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

ihPyP hat geschrieben:ich habe ein Verständnisproblem mit Klassen, welche dynamisch erzeugt werden.
Dein Beispiel-Code erzeugt keine Klassen, sondern Instanzen von Klassen.
ihPyP hat geschrieben: Ich habe genau dies in meinem Beispielprogramm umgesetzt und musste dabei feststellen, dass Daten in den einzelnen Containern immer wieder überschrieben werden. Ich habe das Verhalten zuerst gar nicht verstanden, denn wenn ich eine Zahl in einer Zone geändert habe, dann wurden "gleichzeitig" mehrere Elemente in "MyObject" verändert. Meiner Meinung nach mache ich etwas mit den Pointern in meinem Programm nicht richtig. Es wäre nett, wenn Ihr dies kurz bewerten und mir eine Korrektur schreiben würdet.
Vor X und Y in Objekt1/2 fehlt ein 'self.'. Ansonsten zeigt dein Beispiel-Code das Problem nicht, sondern hört vorher auf. Vielleicht solltest du uns den Code zeigen, der den Fehler auch wirklich produziert.
Bottle: Micro Web Framework + Development Blog
Antworten