Zwei Klassen, die sich gegenseitig brauchen

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
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Ich glaube jetzt wird es unmöglich, falls Python nicht doch noch was in der Reserve hat.

Ich habe zwei Klassen mit zugehörigen Parametern/Variablen in der jeweiligen Klasse, die jeweils in der anderen Klasse benötigt werden.

Da aber entweder die Eine oder die Andere Klasse als Erste erstellt, bzw. instanziert wird, ist jeweils die Andere noch nicht präsent. Und das führt zum Fehler.


Hat hierzu jemand eine Idee ?

Danke.

MrNiceTry
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Versteh ich nicht. Vielleicht willst du mal etwas konkreter werden bzw. ein Beispiel anbringen? Das sieht mir jetzt eher nach einem Denkfehler aus.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wenn du zwei Klassen hast die sich gegenseitig brauchen ist dein Design kaputt. Entweder sie sind sich so ähnlich dass du nur eine Klasse brauchst oder du fasst die Gemeinsamkeiten in einer dritten zusammen.
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Stark vereinfacht:

Code: Alles auswählen

class a(object):
    def __init__(self):
        vari_a = 'aaaaaaaaaaaaa'
        print b.vari_b

class b(object):
    def __init__(self):
        vari_b = 'bbbbbbbbbbbbb'
        print a.vari_a
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Muß nicht zwingend kaputt sein.

Ich hab mich schon mit der Ursache und dem Grund auseinandergesetzt.

Ich habe mal in einer 'zugegebenermaßen' Kompilersprache so was wie ein 'Pre-' zur Lösung eines solchen Problemes gesehen.
Da wurde eine Funktion die erst später erscheint schon vorher zur Pre-Verfügung gestellt.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Das ist ein Designfehler.

Wenn du uns beschreiben könntest, was du machen willst und was du dir deswegen für ein Datenmodell (im Sinn von Klassen) gedacht hast, könnte man dir ggf. helfen... Also raus mit der Sprache jetzt :-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

MrNiceTry hat geschrieben:Da wurde eine Funktion die erst später erscheint schon vorher zur Pre-Verfügung gestellt.
Aber sicherlich nicht eine Variable im Sinne einer Instanz. Das geht nämlich gar nicht. Wie willst du denn z.B. eine Zahl verwenden, die noch gar nicht definiert wurde? Wenn du sowas meinst wie in C ``void foo()`` zu deklarieren, das dann zu verwenden und drunter irgendwann ``void foo() { .... }`` zu definieren -- das ist was anderes. Da geht es um Datentypen, nicht um Werte.
Antworten