首页 > 解决方案 > 在 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.

标签: pythonpython-typing

解决方案


例子

    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

推荐阅读