Встречается на 2% собеседований по Python
В чем разница между абстрактным класом и интерфейсом
Основные различия между интерфейсом и абстрактным классом в Python:
- Назначение:
- Интерфейс определяет только сигнатуры методов (что делать)
- Абстрактный класс может содержать реализацию (как делать)
- Реализация:
- В Python интерфейсы реализуются через ABC (Abstract Base Classes) с
@abstractmethod - Абстрактный класс может содержать как абстрактные, так и обычные методы
- Наследование:
- Класс может реализовывать несколько интерфейсов
- Класс может наследоваться только от одного абстрактного класса
Пример:
python
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")
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы