Курс 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"
- Метод bool() в Python
- Команда %dhist — список посещенных каталогов
- Работа с эмодзи в Python
- Транспонирование матрицы в Python
- Капитализация строк
- Создание словаря с значением по умолчанию
- Создание Telegram-бота на Python
- Автоматизация с Python
- Получение пути к текущему скрипту с помощью os
- Сохранение Unicode в JSON
- Форматирование чисел в Python
- Работа с множествами в Python
- Класс UserDict: дополнительная функциональность
- Протокол управления контекстом
- Создание списка дат
- Модуль antigravity: генерация координат
- Основные операции с библиотекой Numpy
- Управление контекстом выполнения кода
- Метод __irshift__ для побитового сдвига вправо
- Оператор * в Python
- Операции с датами в Python
- Форматирование кода на Python
- Установка и использование Telegram API в Python
- Отправка POST-запроса в REST API
- Создание коллекций из генератора
- Функции all и any в Python
- Встраивание HTML в Jupyter Notebook
- Операции с массивами в NumPy
- Оптимизация гиперпараметров с Scikit Optimize
- Преобразование текста в нижний регистр
- Работа с индексами списков
- Создание словаря и множества
- Использование функции product
- Работа с пакетами
- Функция с *args.
- Удаление ключа из словаря
- Замер времени выполнения кода
- Оператор «not» в Python
- Идентификатор объекта в Python
- Разделение строки с помощью split()
- Установка Home Assistant
- Метод rsub для пользовательских чисел
- Итерации в Python
- Профилирование с cProfile
- TypedDict для kwargs в Python 3.12
- Работа с путями в Python
- kwargs в Python















