【发布时间】:2016-10-13 12:25:53
【问题描述】:
我刚刚在collections.abcs 上查看了一些文档以了解我的一个项目,我需要在其中做一些与类型相关的工作。这些是 Python 2 和 3 中关于 ValuesView 类型的官方文档:
this 是源(Python 2,但在 Python 3 中也是如此)
我对@987654326@ 界面感到非常困惑,因为从一个
它应该从Iterable继承的逻辑观点,恕我直言(它甚至
得到了__iter__ Mixin 方法);相反,文档说它只是
继承自MappingView,后者继承自Sized,后者没有
继承自Iterable。
所以我启动了我的 2.7 解释器:
>>> from collections import Iterable
>>> d = {1:2, 3:4}
>>> isinstance(d.viewvalues(), Iterable)
True
>>>
看起来Iterable毕竟是因为Iterable自己的子类挂钩。
但我不明白为什么ValuesView 不是明确的Iterable。其他ABCs,如Sequence 或Set,明确为Iterable。这背后是否有一些神秘的原因,或者它只是一个很少使用的功能的文档+实现缺陷?
【问题讨论】:
标签: python collections abc