subclass của một Python dict
tác phẩm như mong đợi:Làm thế nào để phân lớp một OrderedDict?
>>> class DictSub(dict):
... def __init__(self):
... self[1] = 10
...
>>> DictSub()
{1: 10}
Tuy nhiên, làm điều tương tự với một collections.OrderedDict
không hoạt động:
>>> import collections
>>> class OrdDictSub(collections.OrderedDict):
... def __init__(self):
... self[1] = 10
...
>>> OrdDictSub()
(…)
AttributeError: 'OrdDictSub' object has no attribute '_OrderedDict__root'
Như vậy, việc thực hiện OrderedDict sử dụng một __root
atribute tư nhân, trong đó ngăn chặn lớp con OrdDictSub
hoạt động như lớp con DictSub
. Tại sao? Làm thế nào người ta có thể kế thừa từ một OrderedDict?
Tại sao bạn nên downvote? – EOL