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