So vermeiden Sie globale Variablen
Beim Lesen der Python-Dokumentation und verschiedener Mailinglisten lese ich immer, was ein bisschen wie ein Dogma aussieht. Globale Variablen sollten höllisch vermieden werden, sie haben ein schlechtes Design ... OK, warum nicht? Aber es gibt Situationen im wirklichen Leben, in denen ich ein solches Muster nicht vermeiden kann.
Angenommen, ich habe eine GUI, von der aus mehrere Dateien über das Hauptmenü geladen werden können. Die Dateiobjekte, die den geladenen Dateien entsprechen, können in der gesamten GUI verwendet werden (z. B. ein Bildbetrachter, der ein Bild anzeigt und auf dem verschiedene Aktionen über verschiedene Dialoge / Plugins ausgeführt werden können).
Stimmt etwas mit der Erstellung des folgenden Entwurfs nicht?
Menu.py -> die Datei wird von hier geladenMain.py -> hier können die geladenen Dateiobjekte verwendet werdenDialog1.py -> oder hierDialog2.py -> oder dortDialog3.py -> oder dort...Globals.pyDabei speichert Globals.py ein Wörterbuch, dessen Schlüssel der Name der geladenen Dateien und der Wert der entsprechenden Dateiobjekte sind. Von dort aus würden dann die verschiedenen Teile des Codes, die diese Daten benötigen, über schwache Verweise darauf zugreifen.
Entschuldigung, wenn meine Frage dumm aussieht (oder ist), aber sehen Sie elegante oder globale Alternativen? Eine Möglichkeit besteht darin, das geladene Datenwörterbuch in der Hauptanwendungsklasse von Main.py zu kapseln, indem es als zentraler Zugriffsteil der GUI betrachtet wird. Dies würde jedoch auch einige Komplikationen mit sich bringen, da diese Klasse von allen Dialogen, die die Daten benötigen, leicht zugänglich sein sollte, selbst wenn sie notwendigerweise direkte Kinder davon sind.
Vielen Dank für Ihre Hilfe