2024-04-24 14:21:50 发布
网友
我有两个类,每个类都有一个方法,每个类都以另一个类的对象作为参数。现在我想在方法上使用pythontype hints (PEP 484),这将产生以下代码:
class A: def do(self, b: B) -> None: pass class B: def do(self, a: A) -> None: pass
这将失败,因为第一次出现B时,它还没有定义。如何解决这种僵局?在
要在这种情况下打破这种联系,您必须将类型的解析延迟到模块的初始解析之后一段时间。对于这种情况,类型提示可以将类型括在引号中:
class A: def do(self, b: 'B') -> None: pass class B: def do(self, a: A) -> None: pass
通过使用引号,文档的初始解析没有问题,而引号中的类型信息可以在需要时(例如由类型检查器)进行评估。来自PEP 484, Forward references:
When a type hint contains names that have not been defined yet, that definition may be expressed as a string literal, to be resolved later.
要在这种情况下打破这种联系,您必须将类型的解析延迟到模块的初始解析之后一段时间。对于这种情况,类型提示可以将类型括在引号中:
通过使用引号,文档的初始解析没有问题,而引号中的类型信息可以在需要时(例如由类型检查器)进行评估。来自PEP 484, Forward references:
相关问题 更多 >
编程相关推荐