Курс 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"
- Concrete Paths — метод .with_suffix()
- Обмен переменными в Jupyter
- Удаление специальных символов с помощью re.sub
- Решатель судоку на Python с pygame
- Функция product() в Python
- Управление контекстом выполнения
- Работа с модулем glob в Python
- Хеширование паролей с солью
- Удаление ключей из словаря
- Виртуальные среды в Python
- Округление дробей в Python
- Переопределение метода __pow__
- Принципы Zen of Python
- Измерение времени выполнения кода
- Вложенные циклы в Python
- Декораторы в Python
- Операторы объединения в Python 3.9
- Метод setdefault() в Python
- Ускорение выполнения кода в Python
- Метод rsub для пользовательских чисел
- Объединение кортежей в Python
- Удаление элементов из списка в Python
- Метод title() в Python
- Роль запятой в Python
- Инициализация переменных
- Обработка ошибок в Python
- Проверка кортежей.
- Метод classmethod
- Преобразование чисел в восьмеричную строку
- Операторы увеличения и уменьшения в Python
- Модуль math: константы π и e
- Именованные срезы в Python
- Retrying в Python: повторные вызовы
- Инвертирование словаря
- Получение текущей даты в Python
- Получение ID процесса
- Создание словарей и множеств в Python.
- Метод ipow для возведения в степень
- Pillow: работа с изображениями
- Цепные операции в Python
- Создание обратного итератора
- Поиск индекса элемента
- Установка Python — Простое руководство
- Конкатенация строк с join() в Python















