如何声明Python数据类成员字段与数据类类型相同

7
我应该如何在Python3.7+中定义一个数据类的成员字段与类名相同? 我想要定义一个如下的类(在Java或C++中可以这样做)-- 这个类可能被用作LinkedList节点的类。
@dataclass
class Node:
  val:str
  next:Node
  prev:Node

然而,我只得到了 NameError: name 'Node' is not defined。在数据类中具有自引用成员变量的正确方式是什么?

这个回答解决了你的问题吗?链接 - bhristov
2个回答

11

你需要将以下导入项添加到你的文件中

from __future__ import annotations

这使得延迟注释成为可能, 这是在PEP 563中提出的。延迟注释允许您引用尚未定义的类,在您的示例中,当您仍在其主体中时,Node类尚未定义。


7

另一种方法是使用 TypeVar

from dataclasses import dataclass
from typing import TypeVar

Node = TypeVar("Node")

@dataclass
class Node:
  val:  str
  next: Node
  prev: Node

当处理类方法的注释时,这也非常有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接