Представьте пример ниже:
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, где метод foo для Parent перезаписывается. Есть ли способ получить доступ и исправить патч от Parent? Возможно, как-то используя super()
?