Python:未知类型提示不会因__future__ import引发异常

时间:2019-04-17 13:49:01

标签: python typehints

所有类都必须先定义,然后才能用作类型提示。要在某些情况下解决该问题,请 process.stdin.on('keypress', function (ch, key) { if (key && key.name === "enter") { console.log(process.argv[2]) } }); 导入is recommended。这就是以下代码可以正常工作的原因(在Python 3.7中):

__future__

如果没有导入from __future__ import annotations class Person: def get_relative(name: str) -> Person: ... ,它将引发__future__。但是这段代码也可以正常工作:

NameError

我期望像from __future__ import annotations class Person: def get_relative(name: BlahBlahTypoWhatever) -> Person: ... 之类的东西。这是预期的行为吗?

1 个答案:

答案 0 :(得分:2)

Python本身不进行任何类型检查,因此不会引发有关错误类型的任何错误。

annotations的未来只是隐式地将所有注释更改为字符串,即等效:

from __future__ import annotations

def foo(bar: Baz): pass
def foo(bar: 'Baz'): pass

由于您的注释现在是字符串,并且Python不对其进行任何处理,因此该名称在任何时候都绝对没有解析,因此不会引起任何错误。