Встречается на 1% собеседований по Python
Какая проблема происходит, когда зависимость в коде не инвертирована
Когда зависимости не инвертированы (нарушается принцип инверсии зависимостей - D из SOLID), код становится жестко связанным. Это приводит к:
- Сложностям в тестировании - нельзя подменить реальные зависимости моками
- Трудностям модификации - изменения в зависимом классе требуют правок во всех использующих его классах
- Нарушению принципа единой ответственности
Пример плохого кода:
python
class MySQLDatabase:
def save(self, data):
print(f"Saving {data} to MySQL")
class App:
def __init__(self):
self.db = MySQLDatabase() # жесткая привязка
def process(self, data):
self.db.save(data)Хороший вариант с инверсией:
python
from abc import ABC, abstractmethod
class Database(ABC):
@abstractmethod
def save(self, data): pass
class App:
def __init__(self, db: Database): # зависимость через интерфейс
self.db = db
def process(self, data):
self.db.save(data)Теперь можно легко подменять реализацию БД и тестировать App изолированно.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы