Falsche Methode wurde im Modul aufgerufen

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
Natur_Huetti
User
Beiträge: 2
Registriert: Donnerstag 10. Juni 2021, 20:06

Donnerstag 10. Juni 2021, 20:56

Hallo Leute,
ich programmiere seit einiger Zeit ein Tool, welches mit Weg und Zeit die Geschwindigkeit und Beschleunigung ausrechnet.
Nun habe ich zwei .py-Files im selben Verzeichnes erstellt, die eine welche das Programm(mainGUI.py) startet und auf eine Benutzereingabe wartet, was ausgerechnet/angezeigt werden soll. In meinem Fall nur v=s/t. Die andere berechnet dann die Geschwindigkeit mit Benutzereingaben (stBerechnung.py)
Ich importiere in die stBerechnung.py das mainGUI.py.
Bei Fehler in der stBerechnung.py oder bei Nutzereingabe soll die returnHome() Methode im mainGUI.py aufgerufen werden.
Das Problem welches sich jetzt hier ergibt ist: Es wird die Falsche Methode im mainGUI.py aufgerufen...
Wenn ich eine Methode (von Beiden (nur zwei im mainGUI.py)) aus-"kommentiere" wird die Richtige aufgerufen (es gibt ja nur noch eine). Wiederum brauche ich die andere Methode im Programmstart.


Schon zu viel geschrieben hier ein Beispiel (stBerechnung.py):

Code: Alles auswählen


diagrammFrage = input( "Geschwindigkeit(Zeit) Diagramm anzeigen(y/n)")

if diagrammFrage == "n":
   from mainGUI import returnHome as mg
   mg.returnHome()
   #....
Die If-Abfragen werden auch erfüllt und und auch ausgeführt (überprüft mit print).


Ich will die returnHome() Methode aufrufen, die startPhysiks() Methode wird allerdings dafür aufgerufen


Hier die mainGUI.py:

Code: Alles auswählen

import stBerechnung

def startPhysiks():
	#etwas
	#Fragt Benutzer welches Programm und startet st-Berechnung mit Willkommensnachricht

def returnHome():
	#etwas
	#Fragt Benutzer welches Programm und startet st-Berechnung allerdings ohne Willkommensnachricht

startPhysiks()
Ich denke, ich gehe an die Sache falsch heran, ich könnte auch alles in eine Python-File "vereinen" aber zwecks der Übersichtlichkeit mache ich lieber mehrere Python-Files.
EDIT: Ich kann nur eins von beiden am "Anfang" vom Code importieren, sonst bekomme ich (logischerweise) einen "circular import" Fehler.

Danke im Vorraus für jegliche Hilfe!
Schönen Abend!
Huetti
Sirius3
User
Beiträge: 14588
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 10. Juni 2021, 21:44

Wenn das eine Modul das andere importiert und dieses wiederum das erste, dann sind diese beiden Module so eng miteinander verbunden, dass sie eigentlich eins sind, oder zumindest anders aufgeteilt werden sollten.
Auf oberster Ebene, darf kein ausführbarer Code stehen, weil der dann beim Import ausgeführt wird, es sei denn er ist per ›if __name__ == "__main__":‹ geschützt.
Modulenamen werden wie Funktionen oder auch Variablennamen komplett klein geschrieben.

`returnHome` als `mg` abzukürzen ist ziemlich verwirrend, zumal returnHome auch kein Attribut mit dem Namen returnHome hat. Benutze keine kryptischen Abkürzungen, dann fallen solche Fehler auch schneller auf.
Natur_Huetti
User
Beiträge: 2
Registriert: Donnerstag 10. Juni 2021, 20:06

Freitag 11. Juni 2021, 20:13

Sirius3 hat geschrieben:
Donnerstag 10. Juni 2021, 21:44
Wenn das eine Modul das andere importiert und dieses wiederum das erste, dann sind diese beiden Module so eng miteinander verbunden, dass sie eigentlich eins sind, oder zumindest anders aufgeteilt werden sollten.
Auf oberster Ebene, darf kein ausführbarer Code stehen, weil der dann beim Import ausgeführt wird, es sei denn er ist per ›if __name__ == "__main__":‹ geschützt.
Modulenamen werden wie Funktionen oder auch Variablennamen komplett klein geschrieben.

`returnHome` als `mg` abzukürzen ist ziemlich verwirrend, zumal returnHome auch kein Attribut mit dem Namen returnHome hat. Benutze keine kryptischen Abkürzungen, dann fallen solche Fehler auch schneller auf.
Jab das war die Lösung
Danke dir!!!
Antworten