Python 3.2+устарело в 3.3abcпонятие
abc.abstractstaticmethod
абстрактные классы
Устарело (deprecated): абстрактный staticmethod. Используйте @staticmethod поверх @abstractmethod.
Синтаксис
@abc.abstractstaticmethod # deprecated
Существует по историческим причинам: до Python 3.3 обычный staticmethod «терял» пометку абстрактности, и нужны были отдельные обёртки. Сейчас staticmethod пробрасывает __isabstractmethod__ сам, поэтому пишут связку из двух декораторов — и порядок важен: @staticmethod должен стоять сверху, @abstractmethod — ближе к функции.
Примеры
import abc
print(callable(abc.abstractstaticmethod)) # → True
print(issubclass(abc.abstractstaticmethod, staticmethod)) # → True
import abc
class Base(abc.ABC): make = abc.abstractstaticmethod(lambda: 1)
print(Base.__abstractmethods__) # → frozenset({'make'})
print(Base()) # → TypeError (не реализован make)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности