我有一些类型(来自var $loading = $('#loadingDiv').hide();
$(document).ajaxStart(function () {
$loading.show();
})
.ajaxStop(function () {
$loading.hide();
});
-> inspect.signature
),我想检查它们是否为列表。我当前的解决方案有效,但是非常难看,请参见下面的最小示例:
inspect.Parameter
检查类型是否为from typing import Dict, List, Type, TypeVar
IntList = List[int]
StrList = List[str]
IntStrDict = Dict[int, str]
TypeT = TypeVar('TypeT')
# todo: Solve without using string representation of type
def is_list_type(the_type: Type[TypeT]) -> bool:
return str(the_type)[:11] == 'typing.List'
assert not is_list_type(IntStrDict)
assert not is_list_type(int)
assert not is_list_type(str)
assert is_list_type(IntList)
assert is_list_type(StrList)
的正确方法是什么?
(我使用的是Python 3.6,该代码应在通过List
的检查后仍然可以保存。)
答案 0 :(得分:1)
您可以使用issubclass
来检查以下类型:
from typing import Dict, List, Type, TypeVar
IntList = List[int]
StrList = List[str]
IntStrDict = Dict[int, str]
TypeT = TypeVar('TypeT')
# todo: Solve without using string representation of type
def is_list_type(the_type: Type[TypeT]) -> bool:
return issubclass(the_type, List)
assert not is_list_type(IntStrDict)
assert not is_list_type(int)
assert not is_list_type(str)
assert is_list_type(IntList)
assert is_list_type(StrList)