Что такое Liskov Substitution Principle?

Senior
199 просмотров
AFK Offer AI

LSP — подкласс должен быть заменяем на родительский класс без нарушения программы. Если Bird.fly() есть, то Penguin(Bird) нарушает LSP — пингвин не летает. Решение: FlyingBird и NonFlyingBird. Признаки нарушения: isinstance проверки в клиентском коде, raise NotImplementedError в подклассе. Контракт родителя: предусловия не усиливаются, постусловия не ослабляются, инварианты сохраняются. В Python: используй Protocol вместо глубокой иерархии, composition вместо наследования. Тесты родителя должны проходить для всех подклассов.

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

Как устроено управление памятью в Python?