하위 방법을 충족되었으며 오르데레디스?

하위 클래스화 한 '예상대로' 는 파이썬 딕트:

>>> class DictSub(dict):
...     def __init__(self):
...         self[1] = 10
...         
>>> DictSub()
{1: 10}

그러나 같은 일을 하고 있는 '콜레스티언스트러더드딕트' 작동하지 않습니다.

>>> import collections
>>> class OrdDictSub(collections.OrderedDict):
...     def __init__(self):
...         self[1] = 10
...         
>>> OrdDictSub()
(…)
AttributeError: 'OrdDictSub' object has no attribute '_OrderedDict__root'

이에 따라 할 수 있는 '속성' 개인 '는 오르데레디스 구축현 _root 오르딕트서브 나오는' 에서 '딕트서브' 같은 하위 클래스. 왜? 어떻게 한 상속됩니다 오버클로킹된 오르데레디스?

질문에 대한 의견 (1)
해결책

'네' '에서' OrderedDict.init init 호출하십시오 합니다.

class OrdDictSub(collections.OrderedDict):
    def __init__(self):
        super(OrdDictSub, self).__init__()

39 점을 감안할 때 ',' 너 자신을 초기화하지 haven& 오르데레디스 기회가 없다. 기술적으로 할 때는 '이 아니라' 때문에 하위 단축시킵니다 딕트 운영까지도 완전 초기화되었습니다 '딕트'. 바로 '없이' 는 사실을 딕트 운빨이야.

해설 (2)

이 '에서' 수퍼 초기화중 시도하시겠습니까 init 방법:

def __init__(self):
    collections.OrderedDict.__init__(self)
    self[1] = 10

이것은 일반적인 방법으로 초기화하려면 하위. T , # 39 를 security. superclass& 너회가 don& # 39 의 'init 방법을 가지고 있지만, 일반적으로' 에 대한 지식이 없으면 정말 호출하십시오 init superclass& # 39 구축현 한다 ''.

해설 (10)