Что означает D в SOLID

Python Senior Билайн
Что означает D в SOLID
Ответы
**Dependency Inversion Principle (DIP)** — принцип инверсии зависимостей. Суть: - Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. - Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. **Пример нарушения DIP:** ``` class LightBulb: def turn_on(self): print("LightBulb: turned on") class Switch: def __init__(self, bulb: LightBulb): self.bulb = bulb def operate(self): self.bulb.turn_on() ``` Здесь `Switch` зависит от конкретного класса `LightBulb`. **Исправленный вариант с DIP:** ``` from abc import ABC, abstractmethod class Switchable(ABC): @abstractmethod def turn_on(self): pass class LightBulb(Switchable): def turn_on(self): print("LightBulb: turned on") class Switch: def __init__(self, device: Switchable): self.device = device def operate(self): self.device.turn_on() ``` Теперь `Switch` зависит от абстракции (`Switchable`), а не от конкретной реализации.