如何使用泛型在Python中返回类的类型?
如何使用泛型在Python中返回类的类型?
我正在使用泛型在python中创建一个类似java列表的List类。节点类也是泛型的,我正在为prev和next节点创建getter和setter方法。我想知道如何返回一个类似节点类本身的类型?\n这是我的进展:\n
from typing import Generic, TypeVar T = TypeVar('T') class Node(Generic[T]): '''泛型类Node,用于模拟链表中的节点。''' def __init__(self, element: T) -> None: '''构造函数。它接收一个类型为T的元素。''' self.element = element self.next = None self.prev = None def get_item(self) -> T: '''返回节点中的元素。''' return self.element def get_prev(self) -> #在这里应该返回什么类型呢?: '''返回前一个节点。''' return self.prev def get_next(self) -> #在这里应该返回什么类型呢?: '''返回下一个节点。''' return self.next def set_prev(self, prev) -> None: '''将前一个元素更改为指定的节点。''' self.prev = prev def set_next(self, next) -> None: '''将下一个元素更改为指定的节点。''' self.next = next
\n我尝试过使用以下代码:\n
def get_prev(self) -> Node[T]: '''返回前一个节点。''' return self.prev def get_next(self) -> Node[T]: '''返回下一个节点。''' return self.next
\n但是它给我报了个错误:\n
错误追踪(最近的调用最先): 文件 "List.py", 行 5, 在class Node(Generic[T]): 文件 "List.py", 行 18, 在 Node def get_prev(self) -> Node[T]: NameError: name 'Node' is not defined
最新的Python版本具有通过泛型返回类类型的能力。在旧的Python版本中(包括3.7),可以通过添加
from __future__ import annotations
来实现。详情请参见https://peps.python.org/pep-0563/#enabling-the-future-behavior-in-python-3-7。