Decorator: Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
Not quite the same as python decorator syntax as in python you call the decorated function and the decorating function is called first whereas the decorating function must be called here.
I subclass ABC
and used the @abstractmethod
decorator from the abc
module here but do not use any of this functionality - it just serves as documentation.