Абстрактные методы в Python

Абстрактные методы в Python

Python Proga

Всем доброго времени суток! Сегодня я вам расскажу об абстрактных методах в Python. Но не стоит читать эту статью, если вы ещё не знаете что такое ООП и не знакомы с наследованием.

Ну а мы тем временем начинаем.

Абстрактные методы содержат только определение метода без реализации. Предполагается, что класс-потомок должен переопределить метод и реализовать его функциональность. Чтобы такое предположение сделать более очевидным, часто внутри абстрактного метода возбуждают исключение.

Т.е. абстрактные методы - это методы, которые обязательно нужно переопределять в дочерних классах, и которые не имеют своей реализации в базовом классе. Например:

Здесь метод get_pr является абстрактным. Если его не переопределить в дочернем классе, то при его вызове возникнет ошибка NotImpletedError.

Эта ошибка нужна специально для того, чтобы показать что метод абстрактный и его нужно переопределить.

Также для определения абстрактных методов можно воспользоваться модулем abc:

Для этого наследуем базовый класс от класса ABC и над абстрактными методами ставим декоратор @abstractmethod.

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

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

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

Report Page