在 python 和类型中动态检查参数类型
Check parameter types dynamically in python and typings
我有一个带有某种管道结构的 class,我想要一个函数来检查管道中的步骤是否兼容。因此,我想遍历所有步骤并根据类型提示检查输入是否与上一步的输出兼容。现在,这是通过从签名中提取类型然后比较类型来完成的。问题是,我如何比较类型?由于某种原因,我似乎找不到任何方法。例如 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.
- 您可以尝试第 3 方库
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
我有一个带有某种管道结构的 class,我想要一个函数来检查管道中的步骤是否兼容。因此,我想遍历所有步骤并根据类型提示检查输入是否与上一步的输出兼容。现在,这是通过从签名中提取类型然后比较类型来完成的。问题是,我如何比较类型?由于某种原因,我似乎找不到任何方法。例如 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.
- 您可以尝试第 3 方库
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