Python中如何在类构造函数中引用自身类的实例?
如何在类的构造函数中使用自身类的实例作为参数类型?
你在定义Node类的构造函数时,想用自身类作为参数的类型注解,结果遇到了Unresolved reference 'Node'错误,代码如下:
class Node: # 出现“Unresolved reference 'Node'”错误 def __init__(self, val: int, left: Node, right: Node): self.val = val self.left = left self.right = right
解决办法
在你的脚本或者Python文件的第一行,添加这条导入语句:
from __future__ import annotations
补充说明
这个方法的原理是:在Python 3.7及以后版本中,__future__.annotations会让所有类型注解以字符串的形式被保存,而不是在代码定义阶段就去解析求值。这样在类内部引用自身类作为类型注解时,就不会因为类还没完成定义而触发引用错误。
另外还有一种替代方案——直接用字符串来写类型注解,比如:
class Node: def __init__(self, val: int, left: 'Node', right: 'Node'): self.val = val self.left = left self.right = right
但相比之下,导入annotations的方式更简洁,也更便于后续维护,尤其当类的结构比较复杂时优势更明显。
内容的提问来源于stack exchange,提问作者WestCoastProjects
相关产品推荐
相关产品推荐

