Курс Python → Принципы LSP и ISP в Python
Принцип подстановки Лискова (LSP) является одним из принципов объектно-ориентированного программирования, который утверждает, что объекты должны быть заменяемыми своими подтипами без измены свойств программы. Другими словами, подклассы должны быть взаимозаменяемы с их суперклассами без нарушения целостности программы. Например, если у нас есть класс «Самолет» и класс «Машина», то класс «Самолет» должен дополнять функциональность класса «Машина», а не заменять ее.
Принцип разделения интерфейса (ISP) предполагает, что интерфейсы не должны быть слишком объемными и должны разделяться на более мелкие части, чтобы клиенты могли реализовывать только те методы, которые им действительно нужны. В Python это может быть не так заметно из-за его динамической типизации и гибкости, но знание этого принципа всегда полезно для улучшения структуры кода. Правильное разделение интерфейсов способствует улучшению расширяемости и оптимизации программы.
Пример использования принципа подстановки Лискова в Python:
class Vehicle:
def drive(self):
pass
class Car(Vehicle):
def drive(self):
print("Driving a car")
class Airplane(Vehicle):
def drive(self):
print("Flying an airplane")
def travel(vehicle):
vehicle.drive()
car = Car()
airplane = Airplane()
travel(car)
travel(airplane)
Пример использования принципа разделения интерфейса в Python:
class Printer:
def print(self, document):
pass
class Scanner:
def scan(self, document):
pass
class MultiFunctionDevice(Printer, Scanner):
def print(self, document):
print("Printing document")
def scan(self, document):
print("Scanning document")
device = MultiFunctionDevice()
device.print("Test document")
device.scan("Test document")
В обоих примерах мы видим, как применение принципов LSP и ISP помогает создавать более гибкие и расширяемые программы, которые легче поддерживать и изменять в будущем.
Другие уроки курса "Python"
- Объединение списков с помощью zip
- Базовые объекты Python
- Очистка данных с помощью pandas
- Обновление ключей в Python
- Частичное совпадение пользовательского ввода в Python 3.10
- Прокачанный трейсинг ошибок
- Выражения-генераторы в Python
- Зарезервированные слова в Python
- Выход из профиля в Django
- Импорт модулей в Python 3.12
- Функция all() в Python
- Работа с модулем bisect
- Протокол управления контекстом
- Создание словарей в Python
- Форматирование строк в Python
- Преобразование кортежа в словарь.
- Модуль functools в Python
- Аннотации типов в Python
- Получение текущего времени в Python
- Избегание циклических зависимостей классов в Python
- Проверка версии Python
- Перетасовка списков в Python
- Создание GUI на Tkinter
- Метод difference_update() — разность множеств
- Инверсия списка и строки
- Работа с комплексными числами
- Замена подстроки
- Сортировка и обратный порядок
- Поиск индекса элемента
- Работа с CSV в Python
- Расширение операции побитового «и» в Python
- Сравнение def и lambda в Python
- Считывание бинарного файла в Python
- Запрос DELETE с библиотекой requests
- Удаление дубликатов из списка с помощью dict.fromkeys
- UserString в Python
- Склеивание строк через метод join()
- Функция format() в Python
- Генераторы данных
- Функции map, filter, reduce
- Объединение словарей в Python
- Метод __call__ в Python
- Сортировка в Python
- Объединение списков в Python
- Работа с комплексными числами















