Встречается на 1% собеседований по Python
Какая проблема интерфейса, созданного на основе абстрактного класса в Python
Основная проблема интерфейсов на основе абстрактных классов в Python — отсутствие строгой проверки реализации на этапе создания класса, а только при инстанцировании. Также Python позволяет частично реализовывать интерфейс, что может привести к ошибкам времени выполнения.
Пример:
python
from abc import ABC, abstractmethod
class DatabaseInterface(ABC):
@abstractmethod
def connect(self):
pass
text
@abstractmethod
def query(self, sql):
passclass MySQLDatabase(DatabaseInterface):
def connect(self):
print("Connected to MySQL")
Проблема: забыли реализовать метод query
db = MySQLDatabase() # TypeError: Can't instantiate abstract class...
text
Проблемы:
1. Ошибка обнаруживается только при создании экземпляра, а не при определении класса
2. Нет механизма проверки сигнатур методов
3. Можно забыть реализовать часть методов
Альтернативы: протоколы (PEP 544) или сторонние библиотеки типа `zope.interface`.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы