9

在 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

dict_items不是已知类型。它也没有在types模块中定义。如何测试对象具有类型dict_items(不消耗数据)?

4

1 回答 1

12

您可以使用collections.abc

from collections import abc

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

注意dict_items是 的子类abc.ItemsView而不是同一个类。为了获得更高的精度,您可以使用:

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

为了澄清上述内容,您可以使用issubclass

issubclass(type(d.items()), abc.ItemsView)  # True
issubclass(abc.ItemsView, type(d.items()))  # False
于 2018-08-24T09:10:19.557 回答