通过__call__重新分配python函数以使用另一个函数

时间:2018-10-25 14:59:38

标签: python function monkeypatching

我试图进行一些极端的猴子修补,但结果出乎意料。 我重新分配了函数的__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

0 个答案:

没有答案