Ответ
В Python для создания интерфейсов и абстрактных классов используется модуль abc (Abstract Base Classes).
Абстрактный класс — это класс, который не может иметь экземпляров и предназначен для наследования. Он определяет "контракт": набор методов, которые должны быть реализованы в дочерних классах.
Ключевые элементы:
ABC: Метакласс, от которого нужно унаследовать свой абстрактный класс.@abstractmethod: Декоратор, который помечает метод как абстрактный. Дочерний класс обязан переопределить этот метод.
Пример
Создадим интерфейс Transport, который требует реализации метода move().
from abc import ABC, abstractmethod
# 1. Определяем абстрактный класс (интерфейс)
class Transport(ABC):
@abstractmethod
def move(self):
"""Этот метод должен быть реализован всеми подклассами."""
pass
# 2. Реализуем интерфейс в конкретных классах
class Car(Transport):
def move(self):
print("Автомобиль едет по дороге")
class Boat(Transport):
def move(self):
print("Лодка плывет по воде")
# 3. Использование
car = Car()
boat = Boat()
car.move() # Вывод: Автомобиль едет по дороге
boat.move() # Вывод: Лодка плывет по воде
# Попытка создать экземпляр без реализации метода вызовет ошибку
try:
class Plane(Transport):
pass
cessna = Plane()
except TypeError as e:
print(f"nОшибка: {e}")
# Вывод: Ошибка: Can't instantiate abstract class Plane with abstract method move
Этот механизм обеспечивает полиморфизм и гарантирует, что все объекты, реализующие интерфейс, будут иметь одинаковый набор методов, что делает код более предсказуемым и надежным.