裸类型测试类型的正确方法是什么?Python中的Dict?

问题描述

我想编写一个函数[ "3","3","1" ] 来为is_bare_dict返回True,为任何类型的字典(例如Dict)返回false。

我想出的一种方法是:

Dict[int,str]

您可以运行上面的代码https://wandbox.org/permlink/sr9mGbWo3Lh7VrPh

解决方法

也可以一行完成

from typing import Dict,KT,VT

def is_bare_dict(typ) -> bool:
    return not isinstance(typ.__args__,tuple)


print(is_bare_dict(Dict)) # Print True
print(is_bare_dict(Dict[int,str])) # Print False
,
def is_typing_dot_dict(typ) -> bool:
    return typ is typing.Dict

如果您真的想测试某物是否为typing.Dict,则只需这样做。不过,这可能不是正确的测试方法-似乎您也想将dict对待,甚至与typing.Dict[Any,Any]对待。 (此外,typing.Dict已过时,可能最终会消失。)