gpt4 book ai didi

python - 如何继承 OrderedDict?

转载 作者:IT老高 更新时间:2023-10-28 22:12:11 29 4
gpt4 key购买 nike

子类化 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 实现使用私有(private) __root 属性,它可以防止子类 OrdDictSub 表现得像 DictSub 子类。为什么?如何从 OrderedDict 继承?

最佳答案

您需要从您的 __init__ 调用 OrderedDict.__init__:

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

你还没有给 OrderedDict 机会来初始化自己。从技术上讲,您也希望为您的 dict 子类执行此操作,因为您需要一个完全初始化的 dictdict 没有它也能工作,这只是运气。

关于python - 如何继承 OrderedDict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174702/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com