首页 > 解决方案 > __future__ 导入注释不能解决类型提示的循环导入

问题描述

在我的代码中,我在不同的模块中有两个类,它们相互需要用于类型提示。由于这是一个循环导入问题,我已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]
    ...

船员.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到每个项目文件中,但我仍然收到该错误。如果我删除那个特定的循环依赖,其他的就会出现。我的python版本是3.7.6。任何人都知道我做错了什么以及如何解决它?

标签: pythoncircular-dependency

解决方案


推荐阅读