** kwargs中的Python可调用参数

时间:2018-10-09 14:18:24

标签: python


我有以下代码:

def aggregate(self, **kwargs):
    for node in self:
        for prop, val in kwargs.values():
            set_val = val(node) if callable(val) else val
            setattr(node, prop, set_val)
    return self

当我尝试在**kwargs中设置可调用变量时,函数将引发以下错误:

Message: TypeError("'function' object is not iterable",)

请帮助。无法理解问题出在哪里
方法调用如下: obj.aggregate(my_key=_test),其中_test是可呼叫的

1 个答案:

答案 0 :(得分:7)

您要迭代.values(),其中每个值都是一个项目,但是您要解压缩为两个名称,propval。有效地尝试分配prop, val = _test时会发生该错误。

好像您要迭代.items(),而不是.values()。这样,prop将是"my_key",而val _test将会是预期的。