Абстрактные методы в Python
Python ProgaВсем доброго времени суток! Сегодня я вам расскажу об абстрактных методах в Python. Но не стоит читать эту статью, если вы ещё не знаете что такое ООП и не знакомы с наследованием.
Ну а мы тем временем начинаем.
Абстрактные методы содержат только определение метода без реализации. Предполагается, что класс-потомок должен переопределить метод и реализовать его функциональность. Чтобы такое предположение сделать более очевидным, часто внутри абстрактного метода возбуждают исключение.
Т.е. абстрактные методы - это методы, которые обязательно нужно переопределять в дочерних классах, и которые не имеют своей реализации в базовом классе. Например:

Здесь метод get_pr является абстрактным. Если его не переопределить в дочернем классе, то при его вызове возникнет ошибка NotImpletedError.
Эта ошибка нужна специально для того, чтобы показать что метод абстрактный и его нужно переопределить.
Также для определения абстрактных методов можно воспользоваться модулем abc:

Для этого наследуем базовый класс от класса ABC и над абстрактными методами ставим декоратор @abstractmethod.
Если не переопределить метод get_pr в дочернем классе, то исключение будет появляться ещё во время создания экземпляра класса, а не во время вызова абстрактного метода:

Чтобы с помощью модуля abc сделать абстрактным метод класса, используем следующую запись:

На этом я заканчиваю свой рассказ об абстрактных методах.