我创建了一个匿名类的实例,如下所示:
msg = type("Inner", (object,), {"MessageType": lambda self: "300","Feed": lambda self:{} })()
当我打印Feed时看起来很好:
>>> msg.Feed()
{}
现在我需要Feed为此实例返回不同的值:
>>> msg.Feed={"A":1}
>>> msg.Feed()
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
msg.Feed()
TypeError: 'dict' object is not callable
>>>
这将如何运作?
答案 0 :(得分:1)
之前,Feed
是一个可调用的函数。然后,您使用Feed
替换了dict
。 dict
不可调用;如果你想用一个返回dict
的可调用函数替换它,请使用另一个lambda
:
msg.Feed = lambda: {"A": 1}
答案 1 :(得分:0)
在这里描述的类中,“Feed”方法是一个只返回空字典的函数。
分配给它时:
msg.Feed={"A":1}
它变成了一个实际的dict,而不是一个函数,所以当你再次尝试调用它时:
msg.Feed()
你实际上这么说:
{"A":1}()
并且dict不可调用,因此例外。