Ответ
Абстрактный класс (Abstract Base Class, ABC) в Python — это класс, который не может иметь экземпляров и предназначен для использования в качестве базового класса для других классов.
Основная цель — определить общий интерфейс (контракт), который обязаны реализовать все его дочерние классы. Это обеспечивает полиморфизм и делает архитектуру приложения более предсказуемой и надежной.
Для создания используется модуль abc
.
Ключевые элементы:
ABC
: Метакласс, который делает класс абстрактным.@abstractmethod
: Декоратор, помечающий метод как абстрактный. Дочерний класс обязан переопределить этот метод.
Пример
from abc import ABC, abstractmethod
# Абстрактный класс, определяющий интерфейс для всех "транспортных средств"
class Vehicle(ABC):
@abstractmethod
def move(self):
"""Этот метод должен быть реализован в каждом подклассе."""
pass
# Конкретная реализация
class Car(Vehicle):
def move(self):
return "Car is driving on the road."
class Boat(Vehicle):
def move(self):
return "Boat is sailing on the water."
# Попытка создать экземпляр абстрактного класса вызовет ошибку
# vehicle = Vehicle() # TypeError: Can't instantiate abstract class Vehicle with abstract method move
# Экземпляры дочерних классов создаются без проблем
car = Car()
print(car.move()) # -> "Car is driving on the road."
Абстрактные классы особенно полезны при создании фреймворков, плагинов или сложных систем, где необходимо гарантировать, что различные компоненты будут следовать единому стандарту.