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__
需要有序的而不是元组。
如果我更改c.OrderedDict.__init__(self)
,则表示中会出现一个空的有序词。
答案 0 :(得分:3)
解决方案是传递两个参数,因为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
或仅将super
与args
一起使用(因为super
返回已知道调用它的实例的绑定方法):
class AppendiveDict(c.OrderedDict):
def __init__(self, func, *args):
super().__init__(args)