我经常发现自己从模块中导入类,这些模块只在命名空间的最后部分有所不同,例如:
from a.b.c.d import Class1
from a.b.c.e import Class2
from a.b.c.f import Class3
我可以通过某种方式只输入一次a.b.c.
部分吗?
我知道如果它们都具有完全相同的名称空间,即
from a.b.c import Class1
from a.b.c import Class2
from a.b.c import Class3
然后我可以输入
from a.b.c import (Class1, Class2, Class3)
所以对于我的第一个例子,我尝试过像
这样的事情from a.b.c import (d.Class1 as Class1,
e.Class2 as Class2,
f.Class3 as Class3)
......但那没有用。
任何提示都将不胜感激。
答案 0 :(得分:3)
不,没有语法可以将嵌套项导入为本地名称。
您可以导入不同的模块,然后分配到本地名称:
from a.b.c import d, e, f
Class1, Class2, Class3 = d.Class1, e.Class2, f.Class3
del d, e, f
但这不再具有可读性或简洁性。
答案 1 :(得分:3)
如果a
是您自己的一个软件包(或者您愿意并且能够维护一个分支......),您可以使用a.b.c
软件包作为外观:
# a/b/c/__init__.py
from d import Class1
from e import Class2
from f import Class3
然后:
# client code:
from a.b.c import Class1, Class2, Class3
会奏效。