Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态改变边界方法行为_Python - Fatal编程技术网

Python 动态改变边界方法行为

Python 动态改变边界方法行为,python,Python,我创建了一个匿名类Instance,如下所示: msg = type("Inner", (object,), {"MessageType": lambda self: "300","Feed": lambda self:{} })() 当我打印出提要时,它看起来很好: >>> msg.Feed() {} 现在我需要Feed为这个实例返回一个不同的值: >>> msg.Feed={"A":1} >>> msg.Feed() Traceba

我创建了一个匿名类Instance,如下所示:

msg = type("Inner", (object,), {"MessageType": lambda self: "300","Feed": lambda self:{} })()
当我打印出提要时,它看起来很好:

>>> 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
>>> 
>msg.Feed={“A”:1}
>>>msg.Feed()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
msg.Feed()
TypeError:“dict”对象不可调用
>>> 

这是如何工作的?

以前,
Feed
是一个可调用的函数。然后,您将
Feed
替换为
dict
dict
不可调用;如果要将其替换为返回
dict
的可调用函数,请使用另一个
lambda

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

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

分配给它时:

msg.Feed={"A":1}
它变成了一个实际的dict,而不是一个函数,因此当您再次尝试调用它时:

msg.Feed()
你实际上是这么说的:

{"A":1}()

dict是不可调用的,因此出现异常。

您将
msg.Feed
设置为字典。你预计会发生什么?