4

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

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

有关文档,请参阅集合

4

1 回答 1

5

MappingView本质上是用户定义视图的基类。它Sized通过提供__len__属性来实现接口,该属性是它的_mapping成员的长度,所以如果这个实现适合你,你不需要实现你自己的__len__.

它拥有和KeysView的通用代码。这些最后的类可以在任何地方使用,例如,或预期。如果您创建一种新的用户定义类型的数据并希望创建一个既不能与,或进行比较的视图,那么您可以直接子类化并以不同的方式实现and函数。ItemsViewValuesViewmy_dict.keys()my_dict.items()my_dict.values()keysvaluesitemsMappingView__contains____iter__

于 2013-11-18T16:47:53.307 回答