如何在保存从OrderedDi继承的旧的初始化时覆盖初始化

2024-04-26 21:09:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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),则表示中会显示一个空的orderedict。你知道吗


Tags: key函数inselfifinitvaluedef
1条回答
网友
1楼 · 发布于 2024-04-26 21:09:00

解决方案是传递这两个参数,因为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返回一个绑定方法,该方法已经知道在哪个实例上调用它):

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

相关问题 更多 >