我创建了一个匿名类的实例,如下所示: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>>> 这将如何运作?
2 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
以前Feed
是一个可调用的函数。然后,您将其替换Feed
为dict
。Adict
是不可赎回的;如果要将其替换为返回a的可调用函数dict
,请使用另一个lambda
:
msg.Feed = lambda: {"A": 1}
慕田峪4524236
TA贡献1875条经验 获得超5个赞
在这里描述的类中,“ Feed”方法是一个仅返回空dict的函数。
分配给它时:
msg.Feed={"A":1}
它变成了一个实际的字典,而不是一个函数,因此当您尝试再次调用它时:
msg.Feed()
您实际上是在说:
{"A":1}()
dict是不可调用的,因此是例外。
添加回答
举报
0/150
提交
取消