LSP — подкласс должен быть заменяем на родительский класс без нарушения программы. Если Bird.fly() есть, то Penguin(Bird) нарушает LSP — пингвин не летает. Решение: FlyingBird и NonFlyingBird. Признаки нарушения: isinstance проверки в клиентском коде, raise NotImplementedError в подклассе. Контракт родителя: предусловия не усиливаются, постусловия не ослабляются, инварианты сохраняются. В Python: используй Protocol вместо глубокой иерархии, composition вместо наследования. Тесты родителя должны проходить для всех подклассов.
Что такое Liskov Substitution Principle?
Senior
219 просмотровAFK Offer AI
Напишите функцию для выравнивания вложенного списка (flatten nested list)