【问题标题】:How to declare python dataclass member field same as the dataclass type如何声明与数据类类型相同的python数据类成员字段
【发布时间】:2020-10-12 17:57:51
【问题描述】:

如何让数据类的成员字段与 python3.7+ 中的类名相同? 我正在尝试定义一个这样的类(可以在 Java 或 C++ 中完成)——它可以用作 LinkedList 节点的类

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

但是,我得到的只是NameError: name 'Node' is not defined。在数据类中拥有自引用成员变量的正确方法应该是什么

【问题讨论】:

  • this 回答你的问题了吗?

标签: python python-3.x python-dataclasses


【解决方案1】:

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

from __future__ import annotations

这会启用延迟注释,这是在 PEP 563 中提出的。延迟注释允许您引用尚未定义的类,在您的示例中,Node 类在您仍在其主体中时未定义

【讨论】:

    【解决方案2】:

    另一种方法是使用TypeVar

    from dataclasses import dataclass
    from typing import TypeVar
    
    Node = TypeVar("Node")
    
    @dataclass
    class Node:
      val:  str
      next: Node
      prev: Node
    

    这在处理类方法的注解时也很有用。

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      相关资源
      最近更新 更多