Как решить случай циклического импорта со ссылкой на классы данных и default_factory?Python

Программы на Python
Anonymous
Как решить случай циклического импорта со ссылкой на классы данных и default_factory?

Сообщение Anonymous »

Я пишу пакет Python, в котором есть множество модулей (классов, функций...), которые ссылаются друг на друга. У меня возникают проблемы с циклическим импортом.
Как решить такую ​​проблему:
a.py:

Код: Выделить всё

from .b import B
from .c import C

@dataclass
class A:
b: B = field(default_factory=B)
c: C = field(default_factory=C)
b.py:

Код: Выделить всё

from .a import A
from .c import C

@dataclass
class B:
a: A = field(default_factory=A)
c: C = field(default_factory=C)
c.py:

Код: Выделить всё

from .a import A
from .b import B

@dataclass
class C:
a: A = field(default_factory=A)
b: B = field(default_factory=B)
Приведенный выше код приведет к циклическому импорту. Я знаю, что смогу решить их, поместив все классы в один файл. Но кода много, и если я каждый раз помещаю все классы в один файл, когда у меня возникает эта проблема, у меня получаются очень большие файлы, и я предпочитаю разбивать их на множество файлов для лучшего опыта программирования. Как лучше всего решить эту проблему?
Что я пробовал:
  • Я пробовал вводить имена классов в ' (апострофы). Но это не работает для deafult_factory.
  • Вместо этого я попробовал использовать импорт, но не могу выясните, как выполнить относительный импорт с помощью ключевого слова import. Что-то вроде этого: импорт .a не сработал.


Подробнее здесь: https://stackoverflow.com/questions/790 ... nd-default

Вернуться в «Python»