gpt4 book ai didi

Python 集合 ValuesView abc : why doesn't it inherit from Iterable?

转载 作者:太空狗 更新时间:2023-10-29 21:54:36 25 4
gpt4 key购买 nike

我只是在查看 collections.abc 上的一些文档s 用于我的一个项目,我需要在其中做一些与类型相关的工作。这些是关于 ValuesView 的官方文档在 Python 2 和 3 中输入:

this是源代码(Python 2,但同样发生在 Python 3 中)

我对 ValuesView 界面感到非常困惑,因为来自逻辑观点它应该从 Iterable 继承,恕我直言(它甚至得到了 __iter__ 混合方法);相反,文档说它只是继承自 MappingView,后者继承自 Sized,后者不继承自 Iterable

所以我启动了我的 2.7 解释器:

>>> from collections import Iterable
>>> d = {1:2, 3:4}
>>> isinstance(d.viewvalues(), Iterable)
True
>>>

看起来Iterable,毕竟是因为Iterable自带的subclasshook。

但我不明白为什么 ValuesView 不是明确的 Iterable。其他 ABC,如 SequenceSet,是明确的 Iterable。这背后是否有一些神秘的原因,或者它只是一个很少使用的功能的文档+实现缺陷?

最佳答案

在 Python 3.7.2 中,它继承自 MappingViewCollection,后者又继承自(除其他外)Iterable。有人听你说话。

关于Python 集合 ValuesView abc : why doesn't it inherit from Iterable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com