Вы просто делаете звонок сами.Это не будет тяжелее, синтаксически, чем декоратор, который вы устанавливаете.
class Derived(Base):
def some_abstract_interface(self, **params):
self.some_base_impl()
print('actual logic her {0}.format(params))
На самом деле вам даже не нужно разделять some_base_impl
и some_abstract_interace
;абстрактный метод может иметь реализацию, но все же требует переопределения.
from abc import ABC, abstractmethod
class Base(ABC):
@abstractmethod
def some_abstract_interface(self, **params):
pass # Put base implementation here
class Derived(Base):
def some_abstract_interface(self, **params):
super().some_abstract_interface(**params)
print("actual logic here {0}".format(params))