Como subclassificar um OrderedDict?
Subclassificando um Pythondict
funciona como esperado:
>>> class DictSub(dict):
... def __init__(self):
... self[1] = 10
...
>>> DictSub()
{1: 10}
No entanto, fazendo a mesma coisa com umcollections.OrderedDict
não funciona:
>>> import collections
>>> class OrdDictSub(collections.OrderedDict):
... def __init__(self):
... self[1] = 10
...
>>> OrdDictSub()
(…)
AttributeError: 'OrdDictSub' object has no attribute '_OrderedDict__root'
Assim, a implementação de OrderedDict usa um__root
atributo, que impede a subclasseOrdDictSub
de se comportar como oDictSub
subclasse. Por quê? Como se pode herdar de um OrderedDict?