Ответ
Абстрактный класс в Python — это класс, который нельзя инстанциировать напрямую. Он служит шаблоном (контрактом) для других классов, определяя набор методов, которые обязательно должны быть реализованы в его дочерних (конкретных) классах.
Почему это важно? Абстрактные классы используются для:
- Обеспечения единого интерфейса: Гарантируют, что все подклассы будут иметь определённый набор методов, что упрощает работу с ними через общий интерфейс.
- Контроля структуры: Помогают поддерживать согласованную структуру в иерархии классов.
- Предотвращения неполной реализации: Не позволяют создать объект класса, который не реализовал все необходимые методы.
Для создания абстрактных классов в Python используется встроенный модуль abc
(Abstract Base Classes). Ключевые компоненты:
ABC
: Базовый класс, от которого должны наследоваться абстрактные классы.@abstractmethod
: Декоратор, помечающий метод как абстрактный. Такие методы не имеют реализации в абстрактном классе и должны быть переопределены в подклассах.
Пример:
from abc import ABC, abstractmethod
class Animal(ABC): # Наследуемся от ABC
@abstractmethod
def make_sound(self):
"""Абстрактный метод: каждый потомок должен реализовать свой звук."""
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
# animal = Animal() # TypeError: Can't instantiate abstract class Animal with abstract method make_sound
dog = Dog()
print(f"Dog sound: {dog.make_sound()}") # Вывод: Dog sound: Woof!