Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用类型暗示时,如何编写作为链表中节点的Python类_Python - Fatal编程技术网

在使用类型暗示时,如何编写作为链表中节点的Python类

在使用类型暗示时,如何编写作为链表中节点的Python类,python,Python,在Python3.7中,我有一个dataclass,它是链表中的一个节点 from dataclasses import dataclass @dataclass class Node(object): right: Node left: Node 问题是我在Pycharm中得到一个检查错误: 未解析的引用“节点” 运行时会出现此错误 NameError:未定义名称“节点” dataclass要求我声明类型,因此如何解决此问题?解决此问题 通过添加以下导入,稍后将解析类型提示

在Python3.7中,我有一个dataclass,它是链表中的一个节点

from dataclasses import dataclass

@dataclass
class Node(object):
    right: Node
    left: Node
问题是我在Pycharm中得到一个检查错误:

未解析的引用“节点”

运行时会出现此错误

NameError:未定义名称“节点”

dataclass要求我声明类型,因此如何解决此问题?

解决此问题

通过添加以下导入,稍后将解析类型提示

from __future__ import annotations
解决这个问题

通过添加以下导入,稍后将解析类型提示

from __future__ import annotations

我只想指出,只有python 3.7+PEP 563声明“就像在PEP 484和PEP 526中一样,需要强调的是python仍然是一种动态类型化的语言,并且作者不希望强制执行类型提示,即使按照惯例也是如此。”但这与,您可以看到,数据类需要类型暗示才能工作。因此,在我看来,这是一个答案是mandatory的情况,我只想指出,这只适用于python 3.7+PEP 563状态“就像在PEP 484和PEP 526中一样,应该强调的是python将仍然是一种动态类型化的语言,并且作者不希望强制执行类型提示,即使按照惯例也是如此。”但与此相反,您可以看到数据类需要类型暗示才能工作。所以,在我看来,答案的重要性是强制性的