Можно ли написать интерфейс в Python
Python
Senior
Без компании
Можно ли написать интерфейс в Python
Ответы
Да, в Python можно создавать интерфейсы с помощью абстрактных базовых классов (ABC) из модуля `abc`. Интерфейс определяет контракт, который должны реализовывать дочерние классы, без предоставления конкретной реализации.
Пример:
```
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
def perimeter(self):
return 2 * 3.14 * self.radius
```
Ключевые моменты:
- Используем `ABC` как базовый класс
- Методы помечаем `@abstractmethod`
- Класс-наследник обязан реализовать все абстрактные методы
- Нельзя создать экземпляр абстрактного класса
Также можно использовать протоколы (PEP 544) для структурной типизации.