Встречается на собеседованиях • сегодня

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

В Python нет явного синтаксиса для интерфейсов как в Java или C#, но их можно реализовать несколькими способами:

  1. ABC (Abstract Base Classes) - наиболее Pythonic способ:
python
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

text

2. **Протоколы (с Python 3.8+)** - структурная типизация:
```python
from typing import Protocol

class Drawable(Protocol):
    def draw(self) -> None: ...

def render(item: Drawable):
    item.draw()
  1. Duck typing - неявные интерфейсы:
python
class Duck:
    def quack(self):
        print("Quack!")

def make_sound(obj):
    obj.quack()  # Работает с любым объектом, имеющим метод quack()

Python предпочитает "утиную типизацию" - если объект ведет себя как интерфейс (имеет нужные методы), он считается реализующим этот интерфейс. ABC и Protocol используются для явного указания контрактов, когда это необходимо.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы