краткий способ импорта многих модулей с общими префиксами пространства имен
Я часто обнаруживаю, что импортирую классы из модулей, которые отличаются только в последней части своего пространства имен, например:
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)
... но это не сработало.
Любые советы будут очень признательны.
2 ответа:
Если
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
Будет работать.