gpt4 book ai didi

python - 如何覆盖 __init__ 同时保存继承自 OrderedDict 的旧 __init__

转载 作者:行者123 更新时间:2023-11-30 22:45:45 29 4
gpt4 key购买 nike

class AppendiveDict(c.OrderedDict):
def __init__(self,func,*args):
c.OrderedDict.__init__(args)
def __setitem__(self, key, value,):
if key in self:
self[key] = func(self[key])
else:
c.OrderedDict.__setitem__(self,key,value)

我有一个类,它应该将 func 函数应用于字典中已有的项目。如果我这样做 c.OrderedDict.__init__(args) 它告诉我描述符 __init__ 需要一个ordereddict而不是一个元组。

如果我更改c.OrderedDict.__init__(self),则表示中会显示一个空的ordereddict。

最佳答案

解决方案是传递两个参数,因为 c.OrderedDict.__init__ 需要知道它应该在哪个实例上运行以及使用哪些参数:

import collections as c

class AppendiveDict(c.OrderedDict):
def __init__(self, func, *args):
c.OrderedDict.__init__(self, args) # pass self AND args

或者仅将 superargs 一起使用(因为 super 返回一个已经知道在哪个实例上调用它的绑定(bind)方法):

class AppendiveDict(c.OrderedDict):
def __init__(self, func, *args):
super().__init__(args)

关于python - 如何覆盖 __init__ 同时保存继承自 OrderedDict 的旧 __init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112767/

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