我有以下代码:
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
是可呼叫的
答案 0 :(得分:7)
您要迭代.values()
,其中每个值都是一个项目,但是您要解压缩为两个名称,prop
和val
。有效地尝试分配prop, val = _test
时会发生该错误。
好像您要迭代.items()
,而不是.values()
。这样,prop
将是"my_key"
,而val
_test
将会是预期的。