我想对库类的一个方法进行monkey-patch,以便为param定义一个不同的默认值。这失败了:

from functools import partial

class A(object):
    def meth(self, foo=1):
        print(foo)

A.meth = partial(A.meth, foo=2)

a = A()
a.meth()

使用:
Traceback (most recent call last):
  File "...", line 10, in <module>
    a.meth()
TypeError: meth() missing 1 required positional argument: 'self'

正确的做法是什么?
(原始代码对循环中的方法名使用getattr
链接问题中的答案涉及定义新的模块级函数-我想避免新的函数定义

最佳答案

使用partialmethod

In [32]: from functools import partialmethod

In [33]: A.meth = partialmethod(A.meth, foo=2)

In [34]: a = A()

In [35]: a.meth()
2

关于python - Monkey使用类中的原始方法修补了python实例方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54460513/

10-12 19:24