2014-06-17 101 views
0

我需要从其他模块访问主模块中导入的模块范围的变量。如何访问主模块调用的模块范围的变量?

在我的应用程序中,我在同一个目录中有一些模块。其中一个模块是使用configparser读取config_file.ini的模块,以加载使用其他模块的配置变量。

我不想导入多于一次的管理config_file.ini的模块,以避免两次打开同一文件的问题。

我没有在管理config_file.ini(只有一个函数来更新文件)但不加载变量的模块中使用函数或分类。

图形概念:

Module_A:

# !usr/bin/python3 
# -*- coding: UTF-8 -*- 
import module_B 
import module_C 
print(module_B.my_var) 
print(module_C.my_var) 

Module_B:

# !usr/bin/python3 
# -*- coding: UTF-8 -*- 
my_var = "This is the Module B" 

Module_C:

# !usr/bin/python3 
# -*- coding: UTF-8 -*- 
my_var = "This is the Module C" 
print(module_B.my_var) 

我使用Python3.x

我应该将它们封装在单独的类中吗?我不是在OOP经历:-(

回答

0

模块仅加载一次;后续进口重用已经导入模块

换句话说,只需加载config.ini你在一个模块中,然后再导入从该模块为其他变量

+0

但是,如何在它上面的例子中抛出异常的Module_C:?NameError:名字' 'module_B'未定义' – Trimax

+0

@Trimax:但那只是因为'Module_C'如果它需要访问'Module_B'就应该导入'Module_B'。这与加载'config.ini'文件无关。 –

0

如果您要访问Module_B.my_var在Module_C,你Module_C需要import Module_B