Python Glossary English

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