Как избежать глобальных переменных
при чтении документации по Python и различных списков рассылки я всегда читаю то, что немного похоже на догму. Следует избегать глобальных переменных, черт возьми, они плохого дизайна ... Хорошо, а почему бы и нет? Но есть некоторые реальные жизненные ситуации, когда я не знаю, как избежать такой картины.
Скажем, у меня есть графический интерфейс, из которого можно загрузить несколько файлов из главного меню. Файловые объекты, соответствующие загруженным файлам, могут использоваться во всем GUI (например, в средстве просмотра изображений, которое будет отображать изображение и над которым можно выполнять различные действия с помощью различных диалоговых окон / плагинов).
Что-то действительно не так с созданием следующего дизайна:
Menu.py -> файл будет загружен отсюдаMain.py -> загруженные файловые объекты можно использовать здесьDialog1.py -> или здесьDialog2.py -> или тамDialog3.py -> или там...Globals.pyгде Globals.py будет хранить словарь, ключом которого являются имя загруженных файлов и значение соответствующих файловых объектов. Затем оттуда различные части кода, которым нужны эти данные, будут обращаться к ним по слабым ссылкам.
Извините, если мой вопрос выглядит (или является) глупым, но вы видите какие-нибудь изящные или глобальные альтернативы? Одним из способов было бы заключить словарь загруженных данных в основной класс приложения Main.py, рассматривая его как часть центрального доступа графического интерфейса пользователя. Однако это также принесло бы некоторые сложности, так как этот класс должен быть легко доступен из всех диалогов, которым требуются данные, даже если они являются его непосредственными потомками.
большое спасибо за вашу помощь