共享变量通过几个python文件



我的任务是修改一个基于wx-python-gui的程序,该程序有几个.py文件。我想分享一些在a.py中定义的变量,并在b.py中使用它们10-15个变量是这样的形式:

 Amode = [SINGLE]
 Format = [A] etc...

我想在b.py中使用它们。我该怎么做?我读过关于泡菜的文章,但仍然不清楚如何用好它。

import a
// do something with a.Amode
// do something with a.Format

通常,在这种情况下,最好的想法是将变量直接放置在模块上,或者使用一些共享的dataStore。我喜欢博格的图案。

基本上这样做:

#in borg.py
class Borg:
    __shared_state = {}
    def __init__(self):
        self.__dict__ = self.__shared_state

其他地方:

import borg
drone = borg.Borg()
drone.foo = 1;

显然,您可以通过定义__set__来限制这一点。

至于直接将变量放在模块上,我并不喜欢在模块上公开访问有状态变量,但这可能主要是我自己

模块是singleton(无论导入多少次,它实际上只导入一次,而且那一次是共享的),所以我经常为这个用例做的是创建一个名为"shared.py"的模块,并将我想要在其他模块之间共享的数据放在其中。然后,在其他模块中:

import shared
# Use a shared variable/object
print shared.Amode
# Changes to the shared data are seen in all modules where it's imported.
shared.Amode = aNewValue

这样可以很好地将我的所有共享数据保存在自己的命名空间"shared"中。

最新更新