__future__导入批注未解决类型提示的循环导入

时间:2020-02-12 16:52:25

标签: python circular-dependency

在我的代码中,我在不同模块中有两个类,出于类型提示的目的,它们彼此需要。由于这是一个循环导入问题,因此我在每个模块文件的顶部都使用了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,但仍然出现该错误。如果我删除了特定的循环依赖关系,其他人就会出现。 我的python版本是3.7.6。 谁知道我在做什么错以及如何解决?

0 个答案:

没有答案