Например, в Python вы можете определить абстрактный класс с абстрактными методами в abc module , и это хорошо работает.Более того, , начиная с версии 3.3 , вы можете легально смешивать декоратор абстрактного метода со статическим или классическим декоратором.
class IDeployer(abc.ABC):
@staticmethod
@abc.abstractmethod
def get_host_type():
raise NotImplementedError()
Но возможность смешивать эти декораторы не подразумевает необходимости в этом.
Могу ли я смешать эти декораторы, или это наверняка укажет на плохо спроектированный интерфейс?
PS: да, я знаю, что механизм Python ABC действительно не обязывает наследников определять методы, являющиеся статическими / классовыми методами соответственно,Даже подпись абстрактного метода может быть изменена наследниками в Python.