在几个python文件中共享变量

时间:2011-06-17 05:44:06

标签: python

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

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

我想在b.py中使用它们。 我该怎么办呢?我读到了关于Pickle的内容,但仍不清楚如何使用它。

3 个答案:

答案 0 :(得分:3)

import a

// do something with a.Amode

// do something with a.Format

答案 1 :(得分:1)

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

基本上这样做:

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

其他地方:

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

显然,您可以通过定义__set__来限制此项。

至于直接在模块上放置变量,好吧,我真的不喜欢在模块上公开访问有状态变量,但这可能主要是我。

答案 2 :(得分:0)

模块是单例(无论它导入了多少次,它实际上只导入一次,而且一次被共享),所以我经常为这个用例做的是创建一个名为“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

这样可以将所有共享数据保存在自己的命名空间中,“共享”。