我有两个数据类,如:
from dataclasses import dataclass
from pathlib import Path
@dataclass
class InnerDataClass:
host: str
@dataclass
class OuterDataClass:
directory: Path
host: InnerDataClass
当我打电话时 OuterDataClass(...)
,python返回错误 NameError: name 'InnerDataClass' is not defined
在最后一行。它为什么会这样做?我如何解决它?
1条答案
按热度按时间nzrxty8p1#
您的示例实际上是可行的,在实际代码中,类的顺序可能正好相反。python代码文件逐行执行,因此当第一个类的类主体被执行时,第二个类需要已经存在。如果您希望工作正常,则必须按照与内部层次结构从下到上匹配的顺序声明类。
但是,如果您所做的只是注解,而不是实际创建示例,那么您也可以这样做:
跑步
from __future__ import annotations
因为代码文件的第一行将使注解工作,而不管中定义了什么顺序类。它作为pep 563引入是为了帮助循环依赖。