Как я могу унаследовать и переопределить метод класса третьей стороны, чтобы расширить его функциональность? - PullRequest
0 голосов
/ 17 января 2019

Мне нужно переопределить метод класса из стороннего модуля, который мы назовем 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 post(), я бы хотел вместо этого перенаправить метод bar create_object(). Есть ли способ, которым я могу прервать нормальный процесс, вместо этого вызывая мой метод?

1 Ответ

0 голосов
/ 17 января 2019

Следил за этой статьей здесь: 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
...