Python类互相引用引发NameError的问题及解决方法
类互相引用引发NameError的解决方法
问题
代码中两个类互相引用类型注解,无论调整类的定义顺序,都会触发 NameError: name 'Class_Name' is not defined 错误,代码示例如下:
class FirstClass(): second_class: SecondClass def __init__(self): """SOME CODE HERE""" class SecondClass(firsClass: FirstClass): def __init__(self): self.first_class = firstClass
问题核心是:当一个类在定义时引用另一个尚未定义的类,Python解释器会抛出未定义错误,而双向引用的场景下无法通过调整顺序避免。
解决方案
在文件顶部导入如下语句:
from __future__ import annotations
导入该模块后,Python会延迟类型注解的解析,先读取并解析整个文件的所有类定义,因此即使被引用的类定义在后面,也能被正常识别,不会触发未定义错误。
内容的提问来源于stack exchange,提问作者Reponic
相关产品推荐
相关产品推荐

