Python 集合.MappingView

Len*_*nse 6 python collections abc

我正在查看非常好的集合库,更具体的是抽象基类(ABC)。其中一个我无法理解:MappingView。

  • 它有什么用?与Sized相比,它有什么优势?也许是一个例子?
  • 文档说它的基类是 Sized,但另一方面有一个len mixin...那么我们是否必须实现len ?

有关文档,请参阅集合

Cil*_*yan 7

MappingView本质上是用户定义视图的基类。它Sized通过提供__len__其成员长度的属性来实现接口_mapping,因此,如果此实现适合您,则无需实现您自己的__len__.

它保存KeysViewItemsView和的通用代码ValuesViewmy_dict.keys()这些最后的类可以在任何需要像,my_dict.items()或 之类的视图的地方使用my_dict.values()。如果您创建一种新的用户定义类型的数据,并且想要创建一个既不能与keysvalues或进行比较的视图items,那么您可以MappingView直接子类化并以不同的方式实现__contains____iter__函数。