比较Python类型的类型

时间:2017-08-13 08:33:09

标签: python typing

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

1 个答案:

答案 0 :(得分:0)

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

  

此PEP旨在为类型注释提供标准语法,   打开Python代码,以便更轻松地进行静态分析和重构,   潜在的运行时类型检查,以及(可能在某些上下文中)代码   生成利用类型信息。

     

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

     

非目标

     

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