我有这种形式的功能:
def foo(o: "hello") -> dict:
# pass
我知道“-> dict”意味着foo返回一个字典。我不明白的是“你好”部分。为什么将此类型提示作为字符串给出?什么是“你好”?
可能相关-这是一个自动生成的文件。
答案 0 :(得分:5)
类型注释,例如:
class Node:
def next() -> Node:
pass
这段代码实际上失败了,因为在类Node
仍在创建时,Node.next
被引用为Node
的注释。这是以下原因失败的相同原因:
class T:
t = T()
要解决此问题,您可以改用字符串
class Node:
def next() -> 'Node':
pass
,因此类型检查器将仅稍后计算Node
(一个forward reference)。
实际上这是decided的设计缺陷,因此在python 3.7中,您可以使用from __future__ import annotations
,第一个示例将起作用。