【问题标题】:Do dataclasses support pointers?数据类是否支持指针?
【发布时间】:2021-07-07 17:17:20
【问题描述】:

有什么方法可以添加指向数据类结构的指针吗?

from dataclasses import dataclass

@dataclass
class Point:
     x: int
     y: int
     pointer: pointer  # Here

【问题讨论】:

  • 什么是pointer
  • 据我所知,您可以添加任何数据类型。你试过了吗?
  • 听起来你想要next: 'Point'那么可能吗?
  • Python 没有指针。如果你的链表有一个Node 类,你当然可以把其中之一放在一个数据类中。
  • 我想存储下一个节点的地址 - 在 Python 中你不需要任何东西的“地址”。只需将您的对象放在您想要的位置,Python 就会在内部处理地址。此外,在 Python 中,您几乎不需要链表,您通常使用现有的容器,例如列表和字典。

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


【解决方案1】:

如果你想创建一个 Point 对象的单链表,那么你可以这样做

from dataclasses import dataclass

@dataclass
class Point:
     x: int
     y: int
     next: 'Point' = None

然后你可以这样做,例如:

a = Point(1, 1)
b = Point(4, 5)
a.next = b

不过,除非您对链表有特殊需求,否则我建议您使用其中一种标准 Python 数据类型,例如 list。通常很少需要自己滚动,尤其是需要大量管理的链表之类的东西。

【讨论】:

    【解决方案2】:

    假设pointer 是一个类,当然,没有限制。

    @dataclass
    class Point:
      x: int
      y: int
      pointer: pointer
    

    如果您不知道(或不关心)具体类型,您始终可以使用Any 作为类型。数据类真的只关心值。

    from typing import Any
    
    @dataclass
    class Point:
      x: int
      y: int
      pointer: Any
    

    现在pointer 是数据类中的一个字段,可以包含任何内容。

    【讨论】:

    • tnx 你的回答真的帮了我很大的忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2016-06-01
    • 2015-05-15
    • 2021-11-18
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多