2024-03-29 09:25:20 发布
网友
我想在python中执行以下操作,其中XYZ、\u a和\u d是包,foo()在\u d中定义:
XYZ._a._d.foo()
不过,我想把∗a化名为a,把∗d化名为d,这样我就可以这样称呼它:
a.d.foo()
我试着做了以下工作,但似乎别名并没有按我预期的方式生效,它说“没有名为a的模块”。有办法做到这一点吗?你知道吗
from XYZ import _a as a from a import _d as d a.d.foo()
由于导入别名是在当前模块中定义的,而不是在\u d模块中定义的,因此您无法直观地做到这一点。别名的目的是使当前模块易于访问深层模块。你知道吗
from XYZ import _a as a from XYZ._a import _d as d # sets d in the current module only d.foo() #works a._d.foo() #works a.d.foo() #fails
如果要更改_a名称空间,必须直接在那里设置它
_a
from XYZ import _a as a from XYZ._a import _d as d XYZ.a.d = d a.d.foo() #works
TL;DR,换句话说:
from XYZ import _a as a
和…差不多吗
from XYZ import _a a = _a
由于别名只存在于当前模块作用域中,因此执行导入操作的模块。你知道吗
由于导入别名是在当前模块中定义的,而不是在\u d模块中定义的,因此您无法直观地做到这一点。别名的目的是使当前模块易于访问深层模块。你知道吗
如果要更改
_a
名称空间,必须直接在那里设置它TL;DR,换句话说:
和…差不多吗
由于别名只存在于当前模块作用域中,因此执行导入操作的模块。你知道吗
相关问题 更多 >
编程相关推荐