родительский класс python, «оборачивающий» методы дочернего класса

У меня есть следующая ситуация в моем коде Python:

class Parent(object):
    def run(self):
        print "preparing for run"
        self.runImpl()
        print "run done"

class Child(Parent):
    def runImpl(self):
        print "child running"

Тем не менее, у меня есть несколько таких «декораторов», выполняющих различные шаги настройки / демонтажа до и после «runImpl», и мне не нравится определятьrun(), runImpl(), runImplSingleProcess() и т.п.

Я ищу решение следующей формы:

class Parent(object):
    @wrapping_child_call
    def run(self, func_impl, *args, **kwargs)
        print "preparing for run"
        func_impl(*args, **kwargs)
        print "run done"

class Child(Parent):
    def run(self):
        print "child running"

Таким образом, классу Child почти не нужно знать, что происходит.

Также может быть проблема с множественным наследованием. ЕслиChild наследует отParent1 а такжеParent2Честно говоря, я не знаю, какое должно быть правильное поведение.

Кто-нибудь знает хороший, естественный способ достижения этого? или я здесь насилую дизайн?

Спасибо
Йонатан

Ответы на вопрос(3)

Ваш ответ на вопрос