【发布时间】:2019-04-22 18:40:31
【问题描述】:
以下代码:
import inspect
from typing import NamedTuple
class Example(NamedTuple):
a: str
if __name__== "__main__":
signature: inspect.Signature = inspect.signature(Example)
print(signature)
输出:
(a: str)
但是当启用PEP 563 – Postponed Evaluation of Annotations:
from __future__ import annotations
import inspect
from typing import NamedTuple
class Example(NamedTuple):
a: str
if __name__== "__main__":
signature: inspect.Signature = inspect.signature(Example)
print(signature)
输出是:
(a: 'str')
如果没有 PEP 563,我怎样才能获得与 inspect.Signature 类型完全相同的对象?
【问题讨论】:
-
PEP 的重点是不得到相同的对象...你必须评估 字符串使用
exec等。
标签: python python-3.x types python-3.7 static-typing