Курс 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"
- Python Менеджер контекста
- Создание и удаление объектов
- Конструктор в Python
- Измерение времени выполнения
- Создание словарей и множеств в Python
- Метод lt для сортировки объектов
- Получение частей дроби
- Область видимости переменных
- Создание словаря с значением по умолчанию
- Проверка файла .py на синтаксис.
- Распаковка аргументов в Python
- Работа со строками
- Утечки переменных цикла в Python 3.x
- Метод rsub в Python: расширение функциональности вычитания
- Метод сравнения объектов в Python
- Создание именованных кортежей в Python
- Работа с CSV файлами в Python
- Конкатенация строк с join() в Python
- Форматирование строк в Python
- Проверка вхождения подстроки
- Вывод символов строки в Python
- Доступ к локальным переменным
- OrderedDict — упорядоченный словарь
- Оптимизация памяти с __slots__
- Форматирование строк с помощью f-строк
- Функция enumerate() в Python
- Возведение в квадрат с помощью itertools
- Работа с классами данных
- Импорт объектов из модулей
- Игра «Угадывание чисел»
- Оптимизация сравнения в Python
- Замена текста с помощью sub
- Генераторы списков
- Возврат значений из генератора
- Функции all() и any() в Python
- Кортежи в Python: особенности и преимущества
- Работа с CSV в Python
- Функция reversed() в Python
- Проверка существования переменной с оператором :=
- Генераторы в Python
- Создание треугольника Паскаля
- Манипуляция формой массива в Numpy
- Отображение графиков в Jupyter с Matplotlib
- Преобразование документов в PDF с помощью Spire.Office















