Kommunikation zwischen Klassen

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
helloBavaria
User
Beiträge: 12
Registriert: Donnerstag 17. Februar 2022, 11:32

Hallo Zusammen,

ich habe gerade folgendes Problem.
In einem größeren Projekt sind verschiedene Klassen in verschiedenen Python Dateien geschrieben, welche in einer "Hauptdatei" importiert werden. Hier werden dann auch die Instanzen erzeugt.
Ich brauche jetzt den Wert einer Variable aus Klasse 1 in Klasse 2, und weiß nicht wie ich darauf zugreifen kann.
Vereinfach sieht das ganze so aus:

Code: Alles auswählen

class1.py
class1:
 def __init__(self):
       self.var = "xyz"

Code: Alles auswählen

class2.py
class2:
 def methodexyz(self):
       id = class1.var # hier habe ich das problem

Code: Alles auswählen

main.py 
from class1 import class1
from class2 import class2
if "__main__" == __name__:
   c1 = class1
   c2 = class2

Hat hier jemand einen Tipp für mich? Wie kommuniziert man am besten zwischen Klassen bzw. Instanzen?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Indem man sie einander bekannt macht. Als einfachste Maßnahme die Instanz der einen als Konstruktorargument and die andere übergeben. Und dann einfach merken & Methoden aufrufen.
helloBavaria
User
Beiträge: 12
Registriert: Donnerstag 17. Februar 2022, 11:32

__deets__ hat geschrieben: Freitag 22. September 2023, 10:33 Indem man sie einander bekannt macht. Als einfachste Maßnahme die Instanz der einen als Konstruktorargument and die andere übergeben. Und dann einfach merken & Methoden aufrufen.
Danke für die schnelle Antwort. Leider weiß ich noch nicht wirklich "wie" und "wo" ich das genau machen muss. In meinem Beispiel in der main.py, irgendwie so?

Code: Alles auswählen

main.py 
from class1 import class1
from class2 import class2
if "__main__" == __name__:
   c1 = class1
   c2 = class2(c1)
helloBavaria
User
Beiträge: 12
Registriert: Donnerstag 17. Februar 2022, 11:32

Ah es hat nach ein paar kleineren Fehlversuchen geklappt -> @__deets danke für die schnelle Hilfe
Benutzeravatar
sparrow
User
Beiträge: 4510
Registriert: Freitag 17. April 2009, 10:28

@helloBavaria: Noch als Hinweis, weil sich dein Code so liest: Man schreibt nicht eine Datei je Klasse.
helloBavaria
User
Beiträge: 12
Registriert: Donnerstag 17. Februar 2022, 11:32

sparrow hat geschrieben: Freitag 22. September 2023, 20:01 @helloBavaria: Noch als Hinweis, weil sich dein Code so liest: Man schreibt nicht eine Datei je Klasse.
Das war nur ein Minimalbeispiel, wobei in diesem Projekt durchaus Python Dateien manchmal nur eine Klasse beinhalten. Meiner Ansicht nach sinnvoll, wenn eine Klasse "logisch" nicht zu einer anderen Datei passt. Oder gibts da einen Codex der was anderes sagt?
Antworten