猿问

动态更改绑定方法的行为

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


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

>>> 

这将如何运作?


四季花海
浏览 158回答 2
2回答

吃鸡游戏

以前Feed是一个可调用的函数。然后,您将其替换Feed为dict。Adict是不可赎回的;如果要将其替换为返回a的可调用函数dict,请使用另一个lambda:msg.Feed&nbsp;=&nbsp;lambda:&nbsp;{"A":&nbsp;1}

慕田峪4524236

在这里描述的类中,“ Feed”方法是一个仅返回空dict的函数。分配给它时:msg.Feed={"A":1}它变成了一个实际的字典,而不是一个函数,因此当您尝试再次调用它时:msg.Feed()您实际上是在说:{"A":1}()dict是不可调用的,因此是例外。
随时随地看视频慕课网APP

相关分类

Python
我要回答