Принцип LSP (Liskov Substitution Principle) гласит, что объекты базового (родительского) класса должны быть заменяемы объектами подкласса без нарушения корректности работы программы. Это означает, что если класс B является подклассом класса A, где бы ожидался объект класса A, можно безопасно использовать объект класса B.
Применение в Python:
Наследование без изменения поведения: Подклассы должны расширять функциональность, а не изменять или нарушать существующее поведение базового класса.
python
Одинаковые сигнатуры методов: Методы в подклассах должны сохранять совместимость сигнатур с методами в базовом классе (количество и типы аргументов, возвращаемое значение).
Неожиданные исключения: Подклассы не должны выбрасывать исключения, которые базовый класс не объявил (если это возможно в Python, что менее формализовано, чем в языках с строгой типизацией исключений, но принцип остается).
Сохранение инвариантов: Подклассы должны поддерживать инварианты (условия, которые всегда должны оставаться истинными) базового класса.
Нарушение LSP часто приводит к неожиданному поведению программы и усложняет ее поддержку.