Python Glossary English

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Сообщить о неточности