在阅读 python 文档和各种邮件列表时,我总是阅读看起来有点像教条的东西。应该像地狱一样避免全局变量,它们的设计很糟糕......好吧,为什么不呢?但是在一些现实生活中我不知道如何避免这种模式。
假设我有一个 GUI,可以从主菜单中加载几个文件。与加载的文件相对应的文件对象可以在整个 GUI 中使用(例如,将显示图像并且可以通过不同的对话框/插件对其执行各种操作的图像查看器)。
构建以下设计是否真的有问题:
- Menu.py --> 文件将从这里加载
- main.py --> 这里可以使用加载的文件对象
- Dialog1.py --> 或者这里
- Dialog2.py --> 或者那里
- Dialog3.py --> 或者那里
- ...
- 全局变量.py
其中 Globals.py 将存储一个字典,其键是加载文件的名称,值是相应的文件对象。然后,从那里,需要这些数据的代码的各个部分将通过弱引用访问它。
抱歉,如果我的问题看起来(或很)愚蠢,但是您是否看到任何优雅或无全球性的替代方案?一种方法是将加载的数据字典封装在 Main.py 的主应用程序类中,将其视为 GUI 的中央访问部分。然而,这也会带来一些复杂性,因为这个类应该可以从所有需要数据的对话框中轻松访问,即使它们是它的直接子级。
非常感谢您的帮助