python - 从 OrderedDict 和 defaultdict 继承

标签 python collections python-3.x multiple-inheritance

雷蒙德·海廷格 showed一种非常酷的组合集合类的方法:

from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
  pass
# if pickle support is desired, see original post

我想为 OrderedDict 和 defaultdict 做类似的事情。但当然,defaultdict 具有不同的 __init__ 签名,因此它需要额外的工作。解决这个问题最干净的方法是什么?我使用 Python 3.3。

我在这里找到了一个很好的解决方案:https://stackoverflow.com/a/4127426/336527 ,但我在想也许从 defaultdict 派生可能会使这更简单?

最佳答案

从您链接到的答案中继承 OrderedDict 是最简单的方法。与从工厂函数获取默认值相比,实现有序存储的工作量更大。

您需要为 defaultdict 实现一些自定义 __init__ 逻辑和极其简单的 __missing__

如果您改为继承自 defaultdict,则必须委托(delegate)或重新实现至少 __setitem____delitem____iter__ 重现顺序操作。您仍然需要在 __init__ 中进行设置工作,尽管您可以根据需要继承或简单地省略一些其他方法。

看看the original recipeany of the others linked to from another Stack Overflow question对于这将需要什么。

关于python - 从 OrderedDict 和 defaultdict 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951927/

相关文章:

javascript - 如何在 hadoop map reduce 编程框架中打印中间数据

python - 无法使用 python zipfile 库解压缩带有密码的 .zip 文件

python - 如何管理多层字典,自定义列,减去列数据,添加新列?

arrays - 在 Python 3 中将查找表应用于 NUMPY 数组的最有效方法

python - 如何在 jython/python 中解析 getAttribute (jmx) 的输出

python - Pandas DataFrame 相等 - 索引编号

python - 为什么LinearSVC做不了这种简单的分类呢?

java - 理解Java中HashMap的逻辑

iOS [[MPMediaQuery playlistsQuery] collections] 在第一次运行时返回 "Playback History"

python - 为什么在 python 中使用 Sublime 实现二进制搜索时无法在控制台上获得结果?