比较Python打字的类型
我有一个函数接受另一个Python类型的提示(__annotations__
)。我想用这些提示在运行时进行一些类型检查。问题是来自打字模块的类型类似乎并不容易处理(no isinstance,没有issubclass)。所以,我想知道,是否有办法将它们转换为mypy类型对象,然后使用mypy.subtypes.is_subtype
来比较类型提示中的类型?比较Python打字的类型
简短的答案是没有简单的方法。根据设计,typing
模块不会为运行时检查提供很多帮助。 PEP 484说
这PEP旨在为类型注释提供了一个标准语法, 开放Python代码更容易静态分析和重构, 潜在的运行时类型检查,以及(也许,在某些情况下)代码 代利用类型信息。
在这些目标中,静态分析是最重要的。这包括 支持脱机类型检查程序,如
mypy
,以及提供 IDE可用于代码完成和 重构的标准符号。非目标
虽然拟议
typing
模块会包含一些建筑 块运行时类型检查 - 特别是get_type_hints()
功能 - 第三方软件包就必须开发 具体实施运行时类型检查功能,例如使用装饰器或元类的 。使用类型提示来提高性能 优化是针对读者的练习。
是的,所以我的问题是如何使用'mypy'进行运行时类型检查。我明白'输入'不提供它,但如何将'mypy'插入代码以使用其功能? – Mitar
'inspect' module will help。 – stamaimer