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

Ale*_*x L 12 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)
Run Code Online (Sandbox Code Playgroud)

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

from module import class as tmp
new_variable_name = tmp.variable
del tmp
Run Code Online (Sandbox Code Playgroud)

这可能吗?

ick*_*fay 11

variable = __import__('module').class.variable 
Run Code Online (Sandbox Code Playgroud)

  • 除了它不会将任何名称绑定到导入的模块.哪个好; `from module import clazz`"也以同样的方式导入整个模块*.根本没有办法解决这个问题; 如果没有模块的其他上下文,则类定义不能保证有意义,类似于类的属性. (7认同)

jsb*_*eno 6

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

你能做的是:

from mymodule import myclass
myvar = myclass.myvar
del myclass
Run Code Online (Sandbox Code Playgroud)

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

from module.submodule import submodule
Run Code Online (Sandbox Code Playgroud)

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

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