1

在其中 3 个不能互换的情况下,可以通过示例进行简单的解释。

def __setitem__(self,**k):
        #self.val=k
        for key in k:
            self.val.setdefault(key,[]).extend(v for v in k[key])

上面的步骤可以用 setattr(obj,val[,can optional stuff come here??]) 迭代完成吗?

为什么不创建我们自己的风格和私有方法呢?

def _add(self,**k):
    if isinstance(self, CClass):
        for key in k:
            self.val.setdefault(key,[]).extend(v for v in k[key])

问:所有类的范围都允许访问和使用这些私有方法吗?

4

1 回答 1

3

__setitem__只能用于设置一项

def __setitem__(self, key, value):
    self.val.setdefault(key,[]).append(value)

如果您更喜欢一次调用全部扩展,您可以构建类似dict's 的.update()方法,该方法采用可迭代和/或关键字参数:

def update(self, it, **k):
    for key, val in it:
        self.val.setdefault(key,[]).extend(v for v in val)
    for key, val in k.iteritems():
        self.val.setdefault(key,[]).extend(v for v in val)
于 2013-05-14T11:51:03.170 回答