想象下面的例子:
class Parent():
def foo():
...
def Child(Parent):
def foo():
... # some stuff
super().foo()
... # some stuff
obj1 = Parent()
obj2 = Child()
patched_foo():
...
我正在尝试实例化父类(而非类)中的foo
方法 。我目前正在执行以下操作:
import types
def monkey_patch(x):
if isinstance(x, Parent):
x.foo = types.MethodType(patched_foo, x)
这对于obj1可以正常工作,但不适用于obj2,因为parent的foo方法被覆盖了。有没有一种方法可以访问并从Parent修补foo?也许以某种方式使用super()
?
答案 0 :(得分:1)
int(x)
正在从父类对象中检索该方法,其中只有一个。您可以在该类上修补该方法,但是更改将由父类及其后代的所有实例感知到。您无法修补单个实例。