我有两个带有方法的类,每个方法都将各自其他类的对象作为参数。现在,我想在方法上使用python type hints (PEP 484),这将导致以下代码:
class A:
def do(self, b: B) -> None:
pass
class B:
def do(self, a: A) -> None:
pass
这将失败,因为尚未定义的第一次出现B。该僵局如何解决?
答案 0 :(得分:0)
要在这种情况下打破局限,必须将类型的分析延迟到模块初始分析之后的某个时间。对于这种情况,类型提示使您可以用引号将类型引起来:
class A:
def do(self, b: 'B') -> None:
pass
class B:
def do(self, a: A) -> None:
pass
通过使用引号,可以对文档进行初始解析,而不会出现问题,而可以在需要时评估引号中的类型信息,例如通过类型检查器。来自PEP 484, Forward references:
当类型提示包含尚未定义的名称时,该定义可以表示为字符串文字,以便稍后解析。