У меня есть следующая ситуация в моем коде 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()
в моих классах Parent
, Child
и ChildSingleProcess
.
Я ищу решение в следующем виде:
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
наследуется от Parent1
и Parent2
, я, честно говоря, не знаю, каким должно быть правильное поведение.
Кто-нибудь знает хороший, естественный способ добиться этого? или я насилую дизайн здесь?
Спасибо
Йонатан
func_impl
это (оригинал)Child.run
- person Eric   schedule 15.05.2013