我的任务是修改一个基于wx python gui的程序,它有几个.py文件。 我想分享一些在a.py中定义的变量,并在b.py中使用它们 10-15变量具有以下形式:
Amode = [SINGLE]
Format = [A] etc...
我想在b.py中使用它们。 我该怎么办呢?我读到了关于Pickle的内容,但仍不清楚如何使用它。
答案 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
这样可以将所有共享数据保存在自己的命名空间中,“共享”。