确定对象的类型是否与通过 typing 模块定义的嵌套类型匹配
Determine if the type of an object matches a nested type defined via the typing module
使用 typing 模块,可以指定任意嵌套类型,例如 List[str]
或 Dict[str, Dict[str, float]]
。有没有办法判断对象的类型是否匹配这样的类型?类似于
>>> from typing import List
>>> isinstance(['a', 'b'], List[str])
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "/home/cbieganek/anaconda3/lib/python3.6/typing.py", line 1162, in __instancecheck__
# return issubclass(instance.__class__, self)
# File "/home/cbieganek/anaconda3/lib/python3.6/typing.py", line 1148, in __subclasscheck__
# raise TypeError("Parameterized generics cannot be used with class "
# TypeError: Parameterized generics cannot be used with class or instance checks
我真的没想到 isinstance()
会为此工作,但我想知道是否还有其他可接受的方法。
使用 typing 模块,可以指定任意嵌套类型,例如 List[str]
或 Dict[str, Dict[str, float]]
。有没有办法判断对象的类型是否匹配这样的类型?类似于
>>> from typing import List
>>> isinstance(['a', 'b'], List[str])
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "/home/cbieganek/anaconda3/lib/python3.6/typing.py", line 1162, in __instancecheck__
# return issubclass(instance.__class__, self)
# File "/home/cbieganek/anaconda3/lib/python3.6/typing.py", line 1148, in __subclasscheck__
# raise TypeError("Parameterized generics cannot be used with class "
# TypeError: Parameterized generics cannot be used with class or instance checks
我真的没想到 isinstance()
会为此工作,但我想知道是否还有其他可接受的方法。