【发布时间】:2013-11-18 16:07:08
【问题描述】:
我正在查看非常好的集合库,更具体的是抽象基类 (ABC)。我无法理解的一个:MappingView。
- 它有什么用?它比 Sized 有什么优势?也许是一个例子?
- 文档说它的基类是 Sized,但另一方面有一个 len 混合...那么我们是否必须实现 len,还是不实现?
有关文档,请参阅collections
【问题讨论】:
标签: python collections abc
我正在查看非常好的集合库,更具体的是抽象基类 (ABC)。我无法理解的一个:MappingView。
有关文档,请参阅collections
【问题讨论】:
标签: python collections abc
MappingView 本质上是用户定义视图的基类。它通过提供__len__ 属性来实现Sized 接口,该属性是其_mapping 成员的长度,因此如果此实现适合您,则无需实现自己的__len__。
它拥有KeysView、ItemsView 和ValuesView 的通用代码。这些最后的类可以用于任何需要像 my_dict.keys()、my_dict.items() 或 my_dict.values() 这样的视图的地方。如果您创建一种新的用户定义类型的数据并希望创建一个既不能与keys、values 或items 比较的视图,那么您可以直接继承MappingView 并以不同的方式实现__contains__ 和__iter__ 函数。
【讨论】: