Eri*_*ric 8 python dictionary types python-3.x python-collections
在Python 3中,我需要测试我的变量是否具有类型'dict_items',所以我尝试了类似的东西:
>>> d={'a':1,'b':2}
>>> d.items()
dict_items([('a', 1), ('b', 2)])
>>> isinstance(d.items(),dict_items)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict_items' is not defined
Run Code Online (Sandbox Code Playgroud)
但dict_items不是一个已知的类型.它没有在types模块中定义.如何测试具有类型的对象dict_items(不消耗数据)?
jpp*_*jpp 10
你可以使用collections.abc:
from collections import abc
isinstance(d.items(), abc.ItemsView) # True
Run Code Online (Sandbox Code Playgroud)
请注意,按照@ schwobaseggl的评论,这dict_items是一个子类的abc.ItemsView,而不是同一类.为了更高的精度,您可以使用:
isinstance(d.items(), type({}.items()))
Run Code Online (Sandbox Code Playgroud)
为了澄清上述内容,您可以使用issubclass:
issubclass(type(d.items()), abc.ItemsView) # True
issubclass(abc.ItemsView, type(d.items())) # False
Run Code Online (Sandbox Code Playgroud)