【发布时间】:2012-10-11 13:36:03
【问题描述】:
我有一个 python module_A 正在做这样的事情:
myvar = "Hello"
def message():
print myvar
从另一个模块,我想导入函数message:
from module_A import message
但这定义了myvar,这是我不想要的(原因与此处无关)。我想我需要区分 importing 从模块中的东西和 使用 任何导入的符号。我实际上希望myvar 在我使用message 时被初始化。
是否有任何类型的 python 钩子可以用来在访问函数或类时初始化东西?我想要类似于以下内容:
module_setup_done = False
def setup():
global module_setup_done, myvar
if not module_setup_done:
myvar = "Hello"
module_setup_done = True
def message():
setup()
print myvar
但是,为了减少混乱,我希望自动调用它,如下所示:
def _init_module():
global myvar
myvar = "Hello"
def message():
print myvar
_init_module() 只会被调用一次,并且只有在模块中的某些东西第一次被访问时,而不是在某些东西被导入时 em>。
python中是否支持这种模式?
【问题讨论】:
标签: python module initialization