我需要从第三方模块中覆盖类方法,我们将其称为foo
。 foo
有一个方法post()
,该方法调用另一个我想覆盖的方法create_object()
,并扩展了它的功能:
foo.py
class Foo():
def create_object():
return 'Creating object 1'
def post(self):
result = self.create_object()
bar.py
class Bar(Foo):
def create_object(self):
return 'Creating object 2'
当调用foo
的{{1}}方法时,我希望将其重定向到post()
的{{1}}方法。有什么办法可以打断正常过程,而是调用我的方法?
答案 0 :(得分:0)
在此处关注了这篇文章:https://tryolabs.com/blog/2013/07/05/run-time-method-patching-python/
更新的代码如下:
foo.py
class Foo():
def create_object():
return 'Creating object 1'
def post(self):
result = self.create_object()
bar.py
class Bar(Foo):
def create_object(self):
return 'Creating object 2'
def run(self):
Foo.create_object = self.create_object