是否可以在类中定义参数的类型,以使该类型引用自身?
例如,以下命令将不会运行:
div.listing
错误:
from typing import List
class Node:
def __init__(self, val: int=0, neighbors: List[Node]=[]):
self.val = val
self.neighbors = neighbors
答案 0 :(得分:0)
这里最好的解决方案是使用Python 3.7+,它增加了对PEP 563: Postponed evaluation of annotations的支持。在这种情况下,您需要做的只是添加:
from __future__ import annotations
位于源文件的顶部,从而可以进行延迟的注释评估(通过甚至不尝试评估注释(除非在诸如mypy
之类的分析器下运行,才能使代码运行更快)。
如果没有3.7+版本,您将受制于使用字符串注释的旧PEP 484 forward references approach:
def __init__(self, val: int=0, neighbors: List['Node']=[]):
请注意Node
周围的引号,这会在稍后定义类型的假设下推迟对类型的求值。