【问题标题】:Compare types from Python typing比较 Python 类型中的类型
【发布时间】:2018-01-21 08:23:33
【问题描述】:

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

【问题讨论】:

  • inspect 模块会有所帮助。

标签: python type-hinting


【解决方案1】:

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

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

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

非进球

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

【讨论】:

  • 是的,所以我的问题是如何使用mypy 进行运行时类型检查。我知道typing 没有提供它,但是如何将mypy 插入代码中以使用其功能?
猜你喜欢
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2012-11-16
  • 2011-09-03
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多