在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
的对象(不消耗数据)?
答案 0 :(得分:8)
您可以使用collections.abc
:
from collections import abc
isinstance(d.items(), abc.ItemsView) # True
请注意,根据@schwobaseggl的评论,dict_items
是abc.ItemsView
的子类,而不是 same 类。为了获得更高的精度,您可以使用:
isinstance(d.items(), type({}.items()))
为阐明上述内容,您可以使用issubclass
:
issubclass(type(d.items()), abc.ItemsView) # True
issubclass(abc.ItemsView, type(d.items())) # False