Есть ли интерфейсы в Python

Python Middle Без компании
Есть ли интерфейсы в Python
Ответы
В Python нет явного синтаксиса для интерфейсов как в Java или C#, но их можно реализовать несколькими способами: - **ABC (Abstract Base Classes)** - наиболее Pythonic способ: ``` from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass class Circle(Shape): def area(self): return 3.14 * self.radius**2 ``` - **Протоколы (с Python 3.8+)** - структурная типизация: ``` from typing import Protocol class Drawable(Protocol): def draw(self) -> None: ... def render(item: Drawable): item.draw() ``` - **Duck typing** - неявные интерфейсы: ``` class Duck: def quack(self): print("Quack!") def make_sound(obj): obj.quack() # Работает с любым объектом, имеющим метод quack() ``` Python предпочитает "утиную типизацию" - если объект ведет себя как интерфейс (имеет нужные методы), он считается реализующим этот интерфейс. ABC и Protocol используются для явного указания контрактов, когда это необходимо.