- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我只是在查看 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
,如 Sequence
或 Set
,是明确的 Iterable
。这背后是否有一些神秘的原因,或者它只是一个很少使用的功能的文档+实现缺陷?
最佳答案
在 Python 3.7.2 中,它继承自 MappingView
和 Collection
,后者又继承自(除其他外)Iterable
。有人听你说话。
关于Python 集合 ValuesView abc : why doesn't it inherit from Iterable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783754/
鉴于 documentation ,以下代码有什么问题: import blist d = blist.sorteddict({3: "first", 7: "second"}) print(d.ke
我只是在查看 collections.abc 上的一些文档s 用于我的一个项目,我需要在其中做一些与类型相关的工作。这些是关于 ValuesView 的官方文档在 Python 2 和 3 中输入:
最近在 PyCharm 中(我不知道是哪个版本启动的,我目前运行的是 2021.2.3 Pro),我收到了没有意义的警告。 例如,这个片段: d = {1: 2, 3: 4, 5: 6} for v
我正在尝试使用 DialogFlow、Twilio 和 Flask 创建一个机器人,但我目前陷入了一些看似简单但找不到很多答案的问题。 基本上,我使用以下函数从 Dialogflow 获取 de js
我是一名优秀的程序员,十分优秀!