Python类型提示以字符串形式给出?

时间:2018-08-01 08:52:29

标签: python type-hinting

我有这种形式的功能:

def foo(o: "hello") -> dict:
    # pass

我知道“-> dict”意味着foo返回一个字典。我不明白的是“你好”部分。为什么将此类型提示作为字符串给出?什么是“你好”?

可能相关-这是一个自动生成的文件。

1 个答案:

答案 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,第一个示例将起作用。