为了账号安全,请及时绑定邮箱和手机立即绑定

动态更改绑定方法的行为

动态更改绑定方法的行为

四季花海 2021-03-07 17:22:04
我创建了一个匿名类的实例,如下所示: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是一个可调用的函数。然后,您将其替换Feeddict。Adict是不可赎回的;如果要将其替换为返回a的可调用函数dict,请使用另一个lambda

msg.Feed = lambda: {"A": 1}


查看完整回答
反对 回复 2021-03-27
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

在这里描述的类中,“ Feed”方法是一个仅返回空dict的函数。

分配给它时:

msg.Feed={"A":1}

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

msg.Feed()

您实际上是在说:

{"A":1}()

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


查看完整回答
反对 回复 2021-03-27
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信