【问题标题】:Python collections.MappingViewPython 集合.MappingView
【发布时间】:2013-11-18 16:07:08
【问题描述】:

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

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

有关文档,请参阅collections

【问题讨论】:

    标签: python collections abc


    【解决方案1】:

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

    它拥有KeysViewItemsViewValuesView 的通用代码。这些最后的类可以用于任何需要像 my_dict.keys()my_dict.items()my_dict.values() 这样的视图的地方。如果您创建一种新的用户定义类型的数据并希望创建一个既不能与keysvaluesitems 比较的视图,那么您可以直接继承MappingView 并以不同的方式实现__contains____iter__ 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 2014-03-13
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多