__future__ импорт аннотаций не разрешает циклический импорт для подсказок типа - PullRequest
0 голосов
/ 12 февраля 2020

В моем коде у меня есть два класса в разных модулях, которые нужны друг другу для целей подсказки типа. Поскольку это проблема кругового импорта, я использовал from __future__ import annotations в верхней части каждого файла моих модулей, но это не решило мою проблему. Я все еще получаю

Traceback (most recent call last):
  File "C:\...\bil\Aircraft.py", line 10, in <module>
    from bil.Crew import Seat
  File "C:\...\bil\Crew.py", line 9, in <module>
    from bil.Aircraft import Aircraft
  File "C:\...\bil\Aircraft.py", line 10, in <module>
    from bil.Crew import Seat
ImportError: cannot import name 'Seat' from 'bil.Crew' (C:\...\bil\Crew.py)

Образцы моего кода: Aircraft.py:

from __future__ import annotations
from bil.Crew import Seat

@dataclass
class Aircraft:
    ...
    defaultCrewComposition: OrderedDict[Seat, int]
    ...

Crew.py

from __future__ import annotations
from bil.Aircraft import Aircraft

@dataclass
class Seat:
    ... (nothing linked to Aircraft)

@dataclass
class Category:
    ...
    aircraft: Aircraft

В качестве последнего средства я добавил from __future__ import annotations для каждого файла проекта, но я все еще получаю эту ошибку. Если я уберу указанную c циклическую зависимость, другие возникнут. Моя версия python 3.7.6. Кто-нибудь знает, что я делаю не так и как я мог это исправить?

...