我试图进行一些极端的猴子修补,但结果出乎意料。
我重新分配了函数的__call__
方法以指向其他函数。
我希望更改该功能的行为,但是似乎它保留了其原始功能。
function
不是object
的子类,还是“异国情调” object
? __getattribute__
还是__getattr__
dunder方法吗? 注意:我知道,只需将原始功能的名称重新分配给新功能即可获得所需的结果。我的问题是关于function
类的内部工作原理。
示例
def add(a,b):
return a+b
def minus(a,b):
return a-b
add.__call__ = minus
运行add
时,您会看到它保留了其原始功能
>>> add(1,2)
... 3