Python 一种使用通用名称空间前缀导入多个模块的简洁方法

Python 一种使用通用名称空间前缀导入多个模块的简洁方法,python,syntax,namespaces,python-import,idioms,Python,Syntax,Namespaces,Python Import,Idioms,我经常发现自己从只在名称空间的最后部分不同的模块导入类,例如: 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

我经常发现自己从只在名称空间的最后部分不同的模块导入类,例如:

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)
。。。但那没用


任何提示都将不胜感激。

不,没有语法可以将嵌套项作为那样的本地名称导入

您可以导入不同的模块,然后分配给本地名称:

from a.b.c import d, e, f
Class1, Class2, Class3 = d.Class1, e.Class2, f.Class3
del d, e, f

但是,这样做既不可读也不简洁。

如果
a
是您自己的软件包之一(或者如果您愿意并愿意维护一个fork…),您可以使用
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