我正在查看非常好的集合库,更具体的是抽象基类(ABC)。我无法理解的一个:MappingView。
- 它的用途是什么?它比 Sized 有什么优势?也许是一个例子?
- 文档说它的基类是 Sized,但另一方面有一个len mixin ......那么我们是否必须实现len?
有关文档,请参阅集合
我正在查看非常好的集合库,更具体的是抽象基类(ABC)。我无法理解的一个:MappingView。
有关文档,请参阅集合
MappingView
本质上是用户定义视图的基类。它Sized
通过提供__len__
属性来实现接口,该属性是它的_mapping
成员的长度,所以如果这个实现适合你,你不需要实现你自己的__len__
.
它拥有和KeysView
的通用代码。这些最后的类可以在任何地方使用,例如,或预期。如果您创建一种新的用户定义类型的数据并希望创建一个既不能与,或进行比较的视图,那么您可以直接子类化并以不同的方式实现and函数。ItemsView
ValuesView
my_dict.keys()
my_dict.items()
my_dict.values()
keys
values
items
MappingView
__contains__
__iter__