Сокращение глубокого импорта / длинных пространств имен - PullRequest
2 голосов
/ 05 мая 2020

Я имею дело с пакетом с длинными пространствами имен, и мне было интересно, есть ли способ его сократить. Например, некоторые импортированные файлы выглядят как

from LongNamespace.EvenLongerNamespace.AnotherOne.Class1 import Class1
from LongNamespace.EvenLongerNamespace.AnotherOne.Class2 import Class2
etc.

Я надеялся, что сработает что-то вроде

Short = LongNamespace.EvenLongerNamespace.AnotherOne
from Short.Class1 import Class1
from Short.Class2 import Class2
etc.

, но, к сожалению, это не работает. Я знаю, что вы можете сделать

t = import LongNamespace.EvenLongerNamespace.AnotherOne
t.Class1 

Но это не чисто, я бы предпочел сохранить структуру from x import y

1 Ответ

2 голосов
/ 05 мая 2020

Class1 и Class2 являются атрибутами модуля AnotherOne, поэтому вы можете назначить их переменным следующим образом:

from LongNamespace.EvenLongerNamespace import AnotherOne
Class1 = AnotherOne.Class1
Class2 = AnotherOne.Class2

Вы также можете импортировать несколько имен в одном операторе:

from LongNamespace.EvenLongerNamespace.AnotherOne import Class1, Class2
...