родительский класс 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
Честно говоря, я не знаю, какое должно быть правильное поведение.
Кто-нибудь знает хороший, естественный способ достижения этого? или я здесь насилую дизайн?
Спасибо
Йонатан