我正在尝试从另一个模块中导入一个类中的变量:
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
这可能吗?
答案 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
字典。