當閱讀python文檔和各種郵件列表時,我總是閱讀看起來有點像教條。全局變量應該像地獄一樣避免,它們是糟糕的設計...好吧,爲什麼不呢?但是有一些真實的生活狀況,我不知道如何避免這種模式。如何避免全局變量
假設我有一個GUI,可以從主菜單中加載幾個文件。可以使用通過所有GUI(例如,將顯示圖像的圖像查看器,並且可以通過不同的對話/插件對其執行各種動作)來使用與所加載的文件相對應的文件對象。
有什麼真的錯了以建設了如下設計:
- Menu.py - >文件將被從這裏裝載
- Main.py - >加載的文件對象可用於這裏
- Dialog1.py - >或此
- Dialog2.py - >或有
- Dialog3.py - >或有
- ...
- Globals.py
其中Globals.py將存儲的字典,其關鍵是加載文件和值對應的文件對象的名稱。然後,從那裏,需要這些數據的代碼的各個部分將通過弱引用來訪問它。
對不起,如果我的問題看起來(或)是愚蠢的,但你看到任何優雅或全球免費的替代品?一種方法是將加載的數據字典封裝在Main.py的主應用程序類中,並將其視爲GUI的中央訪問部分。但是,這也會帶來一些複雜性,因爲即使這些對象需要這些數據,也應該可以從所有需要這些數據的對話中輕鬆訪問,即使這些對象是其直接的子對象。
非常感謝您的幫助
全局變量不是邪惡的。邪惡是什麼使用它作爲一個可變變量。全局變量應儘可能保持靜態和「不變」。如果你不得不在globals.py中更改字典內容,那就不好了。除此之外,閱讀是可以的。 – CppLearner
是的,全局「常量」沒問題,應該避免全局「變量」。 – monkut
好吧,我明白你們的意思,但我仍然沒有看到一個有效的python替代方案,我建議在其中加載的數據字典可能會隨着時間發展(新加載的文件,刪除的文件) – Eurydice