如何检查对象的类型为“ dict_items”?

时间:2018-08-24 09:06:31

标签: python python-3.x dictionary

在Python 3中,我需要测试我的变量是否具有'dict_items'类型,所以我尝试了类似的方法:

import time
import androidhelper
droid = androidhelper.Android()
droid.ttsSpeak("System Stopped!!!")
time.sleep(int(float(droid.ttsSpeak)))

但是>>> 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 是未知类型。 dict_items模块中也未定义。如何测试类型为types的对象(不消耗数据)?

1 个答案:

答案 0 :(得分:8)

您可以使用collections.abc

from collections import abc

isinstance(d.items(), abc.ItemsView)  # True

请注意,根据@schwobaseggl的评论,dict_itemsabc.ItemsView子类,而不是 same 类。为了获得更高的精度,您可以使用:

isinstance(d.items(), type({}.items()))

为阐明上述内容,您可以使用issubclass

issubclass(type(d.items()), abc.ItemsView)  # True
issubclass(abc.ItemsView, type(d.items()))  # False