Ich möchte ein Programm aufräumen und dabei einige Klassen in Module verschieben. Allerdings gibt es eine kleine Abhängigkeit zum Hauptprogramm.
Es gibt so ein gobales Konfigurations-obj, auf das einige der Klassen/Objekte(/Module) mitunter zugreifen müssen. Sieht ungefähr so aus:
Code: Alles auswählen
if (__name__ == "__main__"):
conf = Config() # liest .ini ein
#-- in Objekten/Modulen dann:
print conf.option1
print conf.play.option2
Wenn ich jetzt aber die Klassen in Module auslagere, hab ich von dort ja keinen Zugriff mehr auf die Variable "conf" im Hauptprogramm. Die Module haben alle ihren eigenen Namensraum, und mit "global" kommt man da ja offenbar nicht raus.
Natürlich könnte ich das conf-Modul einfach in den anderen Modulen laden, dort conf=Config() nochmal separat initialisieren. Allerdings hätt ich dann ein halbes Dutzend Kopien davon, und nur die Instanz im Hauptprogramm wäre wirklich aktuell. (Es gibt ein Konfigurationsmenü.)
Wie kann ich denn das eleganter lösen?
Gibt es sowas wie eine Referenz auf das Hauptprogramm? ("__main__" ist ja nur ein Beschreibungsname, aber selbst kein Objekt)
Hab mir überlegt das conf-Objekt vielleicht in die Module zu "injizieren":
Code: Alles auswählen
import module1
module1.conf = conf
import module2
module2.conf = conf
import module3
module3.conf = conf