【发布时间】:2016-07-11 15:37:42
【问题描述】:
我正在尝试弄清楚类型的自引用如何与 python3's type annotations 一起使用 - 文档没有对此进行任何说明。
举个例子:
from typing import TypeVar, Optional, Generic
T = TypeVar('T')
class Node(Generic[T]):
left = None
right = None
value = None
def __init__(
self, value: Optional[T],
left: Optional[Node[T]]=None,
right: Optional[Node[T]]=None,
) -> None:
self.value = value
self.left = left
self.right = right
此代码生成错误:
Traceback (most recent call last):
File "node.py", line 4, in <module>
class Node(Generic[T]):
File "node.py", line 12, in Node
right: Optional[Node[T]]=None,
NameError: name 'Node' is not defined
这是使用 Python 3.5.1
【问题讨论】:
-
嗯,
typing仅从 3.5 开始可用。检查whatsnew of 3.5 version -
@thefourtheye:我编辑了这个问题。我刚刚安装了3.5.1,问题依旧存在。我使用 3.4 的原因是因为我安装了 mypy
标签: python python-3.x python-3.5 typechecking typing