检查列表类型是否为类型别名
Check if list type of type alias
假设您有一个函数,使用 Enum 子类提示类型:
def x(p: CreditScore):
pass
那么你可以这样做:
import inspect
from enum import Enum
sig = inspect.signature(x)
annot = sig.parameters.get('p').annotation
>>> issubclass(annot, Enum)
True
但是,如果它是一个枚举列表,您将如何检查它呢?
def x(p: List[CreditScore]):
pass
您可以通过 typing.get_args() 来完成此操作,对于 X[Y, Z, ...]
returns 元组 (Y, Z, ...)
.
形式的键入对象
sig = inspect.signature(x)
annot = sig.parameters.get('p').annotation
annot_args = typing.get_args(annot)
print(issubclass(annot_args[0], Enum))
假设您有一个函数,使用 Enum 子类提示类型:
def x(p: CreditScore):
pass
那么你可以这样做:
import inspect
from enum import Enum
sig = inspect.signature(x)
annot = sig.parameters.get('p').annotation
>>> issubclass(annot, Enum)
True
但是,如果它是一个枚举列表,您将如何检查它呢?
def x(p: List[CreditScore]):
pass
您可以通过 typing.get_args() 来完成此操作,对于 X[Y, Z, ...]
returns 元组 (Y, Z, ...)
.
sig = inspect.signature(x)
annot = sig.parameters.get('p').annotation
annot_args = typing.get_args(annot)
print(issubclass(annot_args[0], Enum))