从子类继承的python3 decorator方法
正如上面所示的代码,我有一个抽象的从子类继承的python3 decorator方法,python,python-3.x,python-decorators,Python,Python 3.x,Python Decorators,正如上面所示的代码,我有一个抽象的AbstractTask类型和几个子类,我想把after_finish装饰器放在run方法中,这是应用于所有子类的一般行为。我怎样才能做到这一点,只要把装饰一次?或者在python3语法中还有其他方法可以做同样的事情吗?您可以使用第二种方法 您称之为:run 您覆盖的私有文件:\u run 使用abstractmethod可以帮助IDE在忘记实现该方法时发出警告 def after_finish(func): def _decorator(*arg
AbstractTask
类型和几个子类,我想把after_finish
装饰器放在run
方法中,这是应用于所有子类的一般行为。我怎样才能做到这一点,只要把装饰一次?或者在python3语法中还有其他方法可以做同样的事情吗?您可以使用第二种方法
- 您称之为:
run
- 您覆盖的私有文件:
\u run
abstractmethod
可以帮助IDE在忘记实现该方法时发出警告
def after_finish(func):
def _decorator(*args, **kwargs):
ret = func(*args, **kwargs)
print('after finish!')
return ret
return _decorator
class AbstractTask:
@after_finish
def run(self):
raise NotImplementedError
class ConcreteTask1(AbstractTask):
def run(self):
# do concrete task here
return 0
您可以使用第二种方法
- 您称之为:
run
- 您覆盖的私有文件:
\u run
abstractmethod
可以帮助IDE在忘记实现该方法时发出警告
def after_finish(func):
def _decorator(*args, **kwargs):
ret = func(*args, **kwargs)
print('after finish!')
return ret
return _decorator
class AbstractTask:
@after_finish
def run(self):
raise NotImplementedError
class ConcreteTask1(AbstractTask):
def run(self):
# do concrete task here
return 0