родительский класс 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)

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