比较Python打字的类型

比较Python打字的类型

问题描述:

我有一个函数接受另一个Python类型的提示(__annotations__)。我想用这些提示在运行时进行一些类型检查。问题是来自打字模块的类型类似乎并不容易处理(no isinstance,没有issubclass)。所以,我想知道,是否有办法将它们转换为mypy类型对象,然后使用mypy.subtypes.is_subtype来比较类型提示中的类型?比较Python打字的类型

+0

'inspect' module will help。 – stamaimer

简短的答案是没有简单的方法。根据设计,typing模块不会为运行时检查提供很多帮助。 PEP 484说

这PEP旨在为类型注释提供了一个标准语法, 开放Python代码更容易静态分析和重构, 潜在的运行时类型检查,以及(也许,在某些情况下)代码 代利用类型信息。

在这些目标中,静态分析是最重要的。这包括 支持脱机类型检查程序,如mypy,以及提供 IDE可用于代码完成和 重构的标准符号。

非目标

虽然拟议typing模块会包含一些建筑 块运行时类型检查 - 特别是get_type_hints() 功能 - 第三方软件包就必须开发 具体实施运行时类型检查功能,例如使用装饰器或元类的 。使用类型提示来提高性能 优化是针对读者的练习。

+0

是的,所以我的问题是如何使用'mypy'进行运行时类型检查。我明白'输入'不提供它,但如何将'mypy'插入代码以使用其功能? – Mitar