如何继承和重写第三方类方法以扩展其功能?

时间:2019-01-17 03:15:34

标签: python inheritance override

我需要从第三方模块中覆盖类方法,我们将其称为foofoo有一个方法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}}方法。有什么办法可以打断正常过程,而是调用我的方法?

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