Python Glossary English

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