Python Glossary English

Python 3.4+abcпонятие

abc.ABC

абстрактные классы

Вспомогательный базовый класс с метаклассом ABCMeta: наследование от него делает класс абстрактным (нельзя создать экземпляр при наличии абстрактных методов).

Синтаксис

class Base(abc.ABC): ...

Абстрактность проверяется только в момент создания экземпляра: если наследник забыл переопределить хотя бы один абстрактный метод, TypeError прилетит на вызове конструктора, а не при определении класса. Само наследование от ABC ничего не запрещает — потомок без абстрактных методов создаётся спокойно. Если нужна проверка «подходит ли объект по набору методов» без наследования, смотрите в сторону typing.Protocol со структурной типизацией.

Примеры

import abc
class Base(abc.ABC):
    @abc.abstractmethod
    def area(self): ...
try:
    Base()
except TypeError:
    print('нельзя создать абстрактный')   # → нельзя создать абстрактный

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности