Python 3.2+устарело в 3.3abcпонятие
abc.abstractclassmethod
абстрактные классы
Устарело (deprecated): абстрактный classmethod. Используйте @classmethod поверх @abstractmethod.
Синтаксис
@abc.abstractclassmethod # deprecated
Обёртка родом из времён, когда classmethod ещё не умел пробрасывать наружу флаг абстрактности; с Python 3.3 обычная пара @classmethod поверх @abstractmethod делает то же самое, и отдельный декоратор объявлен устаревшим. В стандартной библиотеке он оставлен только ради старого кода — в новом брать не нужно.
Примеры
import abc
print(callable(abc.abstractclassmethod)) # → True
print(issubclass(abc.abstractclassmethod, classmethod)) # → True
import abc
class Base(abc.ABC):
@abc.abstractclassmethod
def create(cls): ...
print(Base.__abstractmethods__) # → frozenset({'create'})
class Modern(abc.ABC):
@classmethod
@abc.abstractmethod
def create(cls): ...
print(Modern.__abstractmethods__) # → frozenset({'create'})
print(Base()) # → TypeError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности