python - __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。任何人都知道我做错了什么以及如何解决它?
解决方案
推荐阅读
- c++ - LeetCode 问题。两个 Sum 链表版本 C++
- android - 在导入错误后更新 Android 中的 OneSignal 依赖项
- sql - SQL Server 将行转换为列
- python - 如何使用 Python 读取任何用户的 GMAIL 收件箱?
- python - 烧瓶 + sqlalchemy crud 应用程序无法连接到 Docker 容器中的 postgres 数据库
- r - 左对齐表格标题
- javascript - 呈现html页面后电子邮件验证不起作用
- html - 为什么 inline-block 会删除单词之间的空格?
- c++ - C++:从外部访问类成员变量
- python - ValueError:logits 和标签必须具有相同的形状 ((None, 1) vs (None, 100, 100, 1))