max*_*max 11 python collections multiple-inheritance python-3.x
Raymond Hettinger 展示了一种非常酷的方式来组合集合类:
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
pass
# if pickle support is desired, see original post
Run Code Online (Sandbox Code Playgroud)
我想为OrderedDict和defaultdict做类似的事情.但是,当然,defaultdict有不同的__init__签名,因此需要额外的工作.解决这个问题最简洁的方法是什么?我使用Python 3.3.
我在这里找到了一个很好的解决方案:https://stackoverflow.com/a/4127426/336527,但我想可能从defaultdict中获得可能会使这更简单?
从OrderedDict您链接到的答案中继承是最简单的方法.实现有序存储比从工厂函数获取默认值要多得多.
您需要实现的defaultdict只是一些自定义__init__逻辑和非常简单__missing__.
如果您继承defaultdict,则必须至少委托或重新实现__setitem__,__delitem__并__iter__重现有序操作.您仍然需要进行设置工作__init__,尽管您可能可以继承或根据您的需要省略其他一些方法.
查看原始配方或其他任何与其他Stack Overflow问题相关联的问题,了解其中包含的内容.
| 归档时间: |
|
| 查看次数: |
5383 次 |
| 最近记录: |