我正在查看非常好的集合库和更具体的抽象基类 (ABC)。一个我无法理解的:MappingView。
有关文档,请参阅 collections
最佳答案
MappingView
本质上是用户定义 View 的基类。它通过提供 Sized
属性来实现 __len__
接口(interface),该属性是其 _mapping
成员的长度,所以如果这个实现对你来说很好,你不需要实现自己的 __len__
。
它包含 KeysView
、 ItemsView
和 ValuesView
的通用代码。这些最后的类可以在需要像 my_dict.keys()
、 my_dict.items()
或 my_dict.values()
这样的 View 的任何地方使用。如果您创建一种新的用户定义类型的数据,并且想要创建一个既不能与 keys
、 values
或 items
相比的 View ,那么您可以直接继承 MappingView
并以不同的方式实现 __contains__
和 __iter__
函数。
关于Python collections.MappingView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20052294/