0

我创建了一个匿名类的实例,如下所示:

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
>>> 

这将如何工作?

4

2 回答 2

1

之前,Feed是一个可调用的函数。然后你Feeddict. Adict不可调用;如果您想用返回 a 的可调用函数替换它dict,请使用另一个lambda

msg.Feed = lambda: {"A": 1}
于 2013-05-27T04:59:33.630 回答
0

在您在这里描述的类中,“Feed”方法是一个只返回一个空字典的函数。

当您分配给它时:

msg.Feed={"A":1}

它变成了一个实际的字典,而不是一个函数,所以当你尝试再次调用它时:

msg.Feed()

你实际上是在说:

{"A":1}()

并且 dict 是不可调用的,因此是例外。

于 2013-05-27T05:06:07.570 回答