все Python 3abcпонятие
abc
модуль
Абстрактные базовые классы: объявить интерфейс, который подклассы обязаны реализовать.
Синтаксис
from abc import ABC, abstractmethod
Модуль берут, когда нужен контракт: класс с @abstractmethod нельзя создать, пока подкласс не реализует все абстрактные методы. Готовые абстракции контейнеров (Iterable, Mapping) лежат не здесь, а в collections.abc. Частая ошибка — забыть унаследоваться от ABC: без метакласса ABCMeta декоратор @abstractmethod ничего не запрещает.
Примеры
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self): ...
class Square(Shape):
def area(self): return 4
print(Square().area()) # → 4
Shape() # → TypeError — абстрактный класс не создать
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности