是否可以引用当前在类定义中定义的类?
from dataclasses import dataclass
from typing import List
@dataclass
class Branch:
tree: List[Branch]
错误:
NameError: name 'Branch' is not defined
是否可以引用当前在类定义中定义的类?
from dataclasses import dataclass
from typing import List
@dataclass
class Branch:
tree: List[Branch]
错误:
NameError: name 'Branch' is not defined
当您在类型提示中使用它时,您还没有完成定义Branch
,因此解释器会抛出 NameError。这与它不起作用的原因相同:
class T:
t = T()
您可以通过将其放在字符串文字中来延迟评估,如下所示
from dataclasses import dataclass
from typing import List
@dataclass
class Branch:
tree: List['Branch']
这实际上在原始规范中被认为是一个错误的决定,并且有一些措施可以恢复它。如果您使用的是 Python 3.7(我猜您是因为您使用的是 Python 3.7 dataclasses
,尽管它在 PyPI 上可用),您可以将from __future__ import annotations
其放在文件顶部以启用此新行为,并且您的原始代码将起作用。