Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpAbInr 130 of 174 menu
◀ ▶

Введение в абстрактные классы в Python

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

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

Когда это поможет: пусть мы создадим наш класс-родитель и несколько потомков к нему. Если потом через некоторое время, например, через месяц, мы решим создать еще одного потомка, наверняка мы уже забудем детали нашего кода и вполне можем забыть написать реализацию какого-нибудь метода в новом потомке. Однако Python не позволит потерять метод - и просто выдаст ошибку.

To же самое касается другого программиста, работающего с вашим проектом. Пусть код класса-родителя писали вы, а затем ваш коллега решил создать еще одного потомка. У вашего коллеги также не получится потерять парочку методов.

Такой родитель называют абстрактным классом. Объект абстрактного класса создать нельзя. Потомок обязан реализовать все абстрактные методы родителя.

В Python для этого используют класс ABC из модуля abc и декоратор @abstractmethod:

from abc import ABC, abstractmethod class User(ABC): @abstractmethod def show(self): pass class Employee(User): def show(self): return 'employee'
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить