所有类都必须先定义,然后才能用作类型提示。要在某些情况下解决该问题,请 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:
...
之类的东西。这是预期的行为吗?
答案 0 :(得分:2)
Python本身不进行任何类型检查,因此不会引发有关错误类型的任何错误。
annotations
的未来只是隐式地将所有注释更改为字符串,即等效:
from __future__ import annotations
def foo(bar: Baz): pass
def foo(bar: 'Baz'): pass
由于您的注释现在是字符串,并且Python不对其进行任何处理,因此该名称在任何时候都绝对没有解析,因此不会引起任何错误。