【发布时间】:2012-06-25 20:16:28
【问题描述】:
子类化 Python dict 按预期工作:
>>> class DictSub(dict):
... def __init__(self):
... self[1] = 10
...
>>> DictSub()
{1: 10}
但是,用 collections.OrderedDict 做同样的事情是行不通的:
>>> import collections
>>> class OrdDictSub(collections.OrderedDict):
... def __init__(self):
... self[1] = 10
...
>>> OrdDictSub()
(…)
AttributeError: 'OrdDictSub' object has no attribute '_OrderedDict__root'
因此,OrderedDict 实现使用私有的__root 属性,从而防止子类OrdDictSub 表现得像DictSub 子类。为什么?如何从 OrderedDict 继承?
【问题讨论】:
标签: python inheritance subclass ordereddictionary