Название, вероятно, вводит в заблуждение - но я не могу придумать ничего лучше, чем «какой элегантный способ решить это?»
У меня есть базовый класс, который получает обратный вызов. Обратный вызов используется примерно так:
class BaseClass(object):
def __init__(self, callback, *args, **kwargs):
self.callback = callback
def useful_method(self):
do_something()
do_more_stuff()
self.callback()
Пока все хорошо. Теперь я хочу наследовать от этого класса, и я хочу сделать что-то эквивалентное этому:
class MyClass(BaseClass):
def useful_method(self):
do_something()
do_more_stuff()
if self.condition and self.callback():
self.condition = False
Я хочу избежать дублирования всего тела useful_method
до обратного вызова. Я не могу сделать условный super
вызов в useful_method
, потому что условие генерируется только в вызовах do_something()
и do_more_stuff()
. Какой элегантный выход из этого?
РЕДАКТИРОВАТЬ: при условии, что я не могу редактировать базовый класс.