从另一个模块导入一个类变量

时间:2012-02-06 02:46:07

标签: python import

我正在尝试从另一个模块中导入一个类中的变量:

import module.class.variable 
# ImportError: No module named class.variable

from module.class import variable 
# ImportError: No module named class

from module import class.variable
# SyntaxError: invalid syntax (the . is highlighted)

我可以执行以下操作,但我更愿意只导入我需要的一个变量。

from module import class as tmp
new_variable_name = tmp.variable
del tmp

这可能吗?

2 个答案:

答案 0 :(得分:11)

variable = __import__('module').class.variable 

答案 1 :(得分:5)

你做不到 - import语句只能带来模块或子模块中的元素 - 类属性虽然可以使用与子模块访问相同的点语法进行寻址,但不能单独导入。

你能做的是:

from mymodule import myclass
myvar = myclass.myvar
del myclass

无论哪种方式,只要有人使用from module import anything语法,就会读取并处理整个模块。例外是

from module.submodule import submodule

,其中,如果子模块本身不需要整个模块,则只处理子模块。

(因此,即使在我上面的解决方法中,mymodule也会被读取并执行 - 它不能在创建import语句的全局命名空间中访问,但是它的所有组件都是可见的sys.modules字典。