Я использую ABC для базового класса. Я попробовал обернуть @abstractmethod, поместив аннотацию до или после, но это не сработало. Насколько я понимаю, весь обернутый метод переопределяется.
Код: Выделить всё
from functools import wraps
from abc import ABC, abstractmethod
def print_before(func):
@wraps(func)
def out(*args, **kwargs):
print('Hello')
return func(*args, **kwargs)
return out
class Base(ABC):
@print_before
@abstractmethod
def test(self):
pass
class Extend(Base):
def test(self):
print('World')
Код: Выделить всё
Extend().test()
Код: Выделить всё
World
Код: Выделить всё
Hello
World
Подробнее здесь: https://stackoverflow.com/questions/577 ... act-method
Мобильная версия