Angenommen, ich habe ein System von drei Klassen.
Die GameClass
erstellt bei der Initialisierung Instanzen beider anderen Klassen.
Was wäre der beste Weg auf AnswerAQuestion()
in FieldClass
von der Instanz von PlayerClass
aus zuzugreifen?
FieldClass
-Instanz an PlayerClass
? PlayerClass
einfügen, um die FieldClass
-Instanz zu halten. Ich würde mit Dependency Injection gehen: instanziieren Sie einen GameClass
mit dem erforderlichen FieldClass
und PlayerClass
in der Konstruktor-Aufruf usw. (dh statt die abhängigen Objekte aus GameClass
zu erzeugen, wie Sie es gerade tun).
Mit DI können Sie nach Abschluss der Einrichtungsphase leicht auf die benötigten Mitglieder zugreifen.
Um Ihre Klassenbeziehungen besser zu verstehen, müssen Sie uns mehr über Ihr Projekt und das, was Sie erreichen wollen, erzählen.
Eine Möglichkeit, die -Instanz von FieldClass
von PlayerClass
in Ihrem Beispiel zu referenzieren, besteht darin, die GameClass
-Instanz an die PlayerClass
-Instanz zu übergeben:
Eine andere Möglichkeit besteht darin, die Variable field
Als Randnotiz: Sie verwenden ein spezielles Benennungsschema. Ich schlage das vor:
%Vor%Ich schlage vor, dass Sie den Python-Stil-Leitfaden lesen, bevor Sie sich schlechte Angewohnheiten zulegen.
Sie könnten den untergeordneten Objekten den Kontext bereitstellen, d. h.
%Vor%Da die Objekte ihren Kontext kennen, können sie hineingreifen und auf andere Objekte im selben Kontext zugreifen.
Ich würde etwas wie das Folgende tun, bei dem Sie Game in eine Rückwärtsreferenz übergeben, die Ihnen den Zugriff auf die anderen zugeordneten Klassen ermöglicht. Auf diese Weise könntest du dieser Player-Instanz optional eine direkte Beziehung zum Feld geben.
%Vor% Eine Randnotiz ist, dass es jetzt eine gute Übung ist, dass alle Ihre Klassen von object
erben, anstatt dass sie alleine stehen.