@abstractmethod
def deliver(self, *args: Any, **kwargs: Any) -> bool:
raise NotImplementedError
Это объявление не означает, что подклассы могут дать deliver
любую подпись, которую они хотят. Методы подкласса deliver
должны быть готовы принять любые аргументы, которые примет метод суперкласса deliver
, поэтому ваш подкласс deliver
должен быть готов принять произвольные позиционные или ключевые аргументы:
# omitting annotations
def deliver(self, *args, **kwargs):
...
У вашего подкласса deliver
нет этой подписи.
Если предполагается, что все подклассы имеют одинаковую подпись deliver
, которую вы написали для MyImplementation
, то вам следует также поставить MyClass.deliver
такую же подпись. Если ваши подклассы будут иметь разные deliver
подписи, возможно, этот метод на самом деле не должен быть в суперклассе, или, возможно, вам нужно переосмыслить иерархию классов или дать им одну и ту же сигнатуру.