Python 循环输入海关 类,

Python typing in a loop of customs classes,

从 Python 3.5 开始,可以使用键入提示。我现在面临无法找到正确使用方法的情况。

我有 2 个文件(FileA.py、FileB.py),其中 class AA 使用 class BB,class BB 使用 classAA.

以下代码运行正常:

FileA.py

from FileB import BB

class AA:

    def __init__(self):
        self.link_to_b = None

    def add_b(self, b: BB):
        self.link_to_b = b

FileB.py

class BB:

    def __init__(self):
        self.property_b = 42
        self.link_to_a = None

    def add_a(self, a):
        self.link_to_a = a

来自 class AA 的方法 add_b(self, b: BB) 正在使用键入提示,指定 b 应该是 BB 的一个实例。

我想对 class BB 中的方法 add_a(self, a) 做同样的事情。问题是,当我尝试从另一个文件导入 class 时(与我在 FileA.py 中所做的相同),我收到一条错误消息。

ImportError: cannot import name 'BB' from 'FileB' 

如果我不导入它,而是尝试使用如下所示的键入提示,我会收到一条 NameError 消息。

def add_a(self, a: AA):

NameError: name 'AA' is not defined

使用打字提示的正确方法应该是什么?

有几个选项可以在尚未定义的对象上使用类型提示: