Jak uniknąć zmiennych globalnych

podczas czytania dokumentacji Pythona i różnych list mailingowych zawsze czytam to, co wygląda trochę jak dogmat. Globalnych zmiennych należy unikać jak diabli, są kiepskie ... OK, czemu nie? Ale są pewne prawdziwe sytuacje, w których nie potrafię uniknąć takiego wzorca.

Powiedzmy, że mam GUI, z którego można załadować kilka plików z menu głównego. Obiekty plików odpowiadające załadowanym plikom mogą być używane w całym interfejsie GUI (np. Przeglądarka obrazów, która wyświetla obraz i na której można wykonywać różne działania za pośrednictwem różnych okien dialogowych / wtyczek).

Czy jest coś nie tak z budowaniem następującego projektu:

Menu.py -> plik zostanie załadowany stądMain.py -> można tutaj załadować załadowane obiekty plikówDialog1.py -> lub tutajDialog2.py -> lub tamDialog3.py -> lub tam...Globals.py

gdzie Globals.py przechowa słownik, którego kluczem jest nazwa załadowanych plików i wartość odpowiadających im obiektów plików. Następnie stamtąd różne części kodu, które potrzebują tych danych, będą miały do ​​niego dostęp za pomocą słabych referencji.

Przepraszam, jeśli moje pytanie wygląda (lub jest) głupie, ale czy widzisz jakieś eleganckie lub globalne alternatywy? Jednym ze sposobów byłoby hermetyzowanie załadowanego słownika danych w głównej klasie aplikacji Main.py, uznając go za centralną część dostępową GUI. Jednakże spowodowałoby to również pewne komplikacje, ponieważ ta klasa powinna być łatwo dostępna ze wszystkich okien dialogowych, które wymagają danych, nawet jeśli są one niezbędne do kierowania nimi dzieci.

dziękuję bardzo za pomoc

questionAnswers(2)

yourAnswerToTheQuestion