python - 在 python 和类型中动态检查参数类型
问题描述
我有一个具有某种管道结构的类,我希望有一个函数来检查管道中的步骤是否兼容。因此,我想遍历所有步骤并检查输入是否与给定类型提示的上一步的输出兼容。现在,这是通过从签名中提取类型然后比较类型来完成的。问题是,我如何比较类型?似乎由于某种原因我找不到任何方法。例如Any
根本不能与issubclass
. 我使用python 3.8。我希望它适用于以下情况:
is_compatible(List, Any) # => True
is_compatible(List[np.ndarray], List[Union[np.ndarray, list]]) # => True
is_compatible(List[str], List[int]) # => False
# etc.
解决方案
- 您可以尝试 3rd-party library
typing-utils
。 - https://github.com/bojiang/typing_utils
- https://pypi.org/project/typing-utils/
例子
from typing_utils import issubtype
issubtype(typing.List, typing.Any) == True
issubtype(list, list) == True
issubtype(list, typing.List) == True
issubtype(list, typing.List[int]) == False
推荐阅读
- tensorflow - Add data to tf.data.Dataset API in batches
- c# - 如何比较两个共享的属性上的两个 HashSet?
- javascript - 只有当输入按特定顺序填写时,才能正确计算百分比
- mongodb - 集合 2 字段上的 Mongo 聚合过滤器
- javascript - 删除点击事件上的图表会产生空错误的“removeHoverStyle”
- r - 在列中按组填充整数范围
- r - 将列表列表转换回数据框列以用作行删除的条件
- javascript - 为什么 JS .map 和 .forEach 方法返回错误的数组长度?
- html - 为什么我不能重复使用“立即阅读”按钮的代码?
- java - 休眠 - 将项目存储在内存中的同一位置?