В чем разница между абстрактным класом и интерфейсом

Python Middle Рунити
В чем разница между абстрактным класом и интерфейсом
Ответы
Основные различия между интерфейсом и абстрактным классом в Python: - **Назначение**: - Интерфейс определяет только сигнатуры методов (что делать) - Абстрактный класс может содержать реализацию (как делать) - **Реализация**: - В Python интерфейсы реализуются через ABC (Abstract Base Classes) с `@abstractmethod` - Абстрактный класс может содержать как абстрактные, так и обычные методы - **Наследование**: - Класс может реализовывать несколько интерфейсов - Класс может наследоваться только от одного абстрактного класса Пример: ``` from abc import ABC, abstractmethod # Интерфейс class Flyable(ABC): @abstractmethod def fly(self): pass # Абстрактный класс class Animal(ABC): @abstractmethod def make_sound(self): pass def sleep(self): print("Zzz...") # Реализация class Bird(Animal, Flyable): def make_sound(self): print("Chirp!") def fly(self): print("Flying high") ```