exi*_*guy 8 python python-3.x python-dataclasses
如何让数据类的成员字段与 python3.7+ 中的类名相同?我正在尝试定义一个像这样的类(可以用 Java 或 C++ 完成)——它可以用作 LinkedList 节点的类
@dataclass
class Node:
  val:str
  next:Node
  prev:Node
然而,我得到的只是NameError: name 'Node' is not defined。在数据类中拥有自引用成员变量的正确方法应该是什么
Iai*_*ton 13
您需要将以下导入添加到您的文件中
from __future__ import annotations
这使得延迟注释成为可能,这是PEP 563中提出的。延迟注释允许您引用尚未定义的类,在您的示例中,Node当您仍在其主体中时,该类尚未定义
另一种方法是使用TypeVar:
from dataclasses import dataclass
from typing import TypeVar
Node = TypeVar("Node")
@dataclass
class Node:
  val:  str
  next: Node
  prev: Node
这在处理类方法的注释时也很有用。
| 归档时间: | 
 | 
| 查看次数: | 2255 次 | 
| 最近记录: |