Урок 70. Наследование и полиморфизм

📁 Блок: Python Fundamentals / OOP ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#class #super #isinstance #issubclass #print #def #is #pass #for #in #add #return #if #else #mkdir #with #and #not

⚡ Кратко: суть урока

Урок про наследование классов, полиморфизм через переопределение методов, функцию super() и проверку типов с isinstance / issubclass.

  • Наследование позволяет дочернему классу получить поля и методы родителя.
  • Полиморфизм — одинаковый вызов ведёт себя по-разному в зависимости от класса объекта.
  • super() вызывает метод ближайшего родителя и помогает избежать дублирования.
  • Все классы в Python неявно наследуют от object.
  • isinstance проверяет объект, issubclass проверяет класс.

Что запомнить: переопределяйте метод родителя, когда нужно другое поведение, и вызывайте super(), чтобы сохранить общую логику.

Частая ошибка: забыть вызвать super().__init__() и повторить инициализацию родителя вручную.

О чём этот урок

Мы уже умеем создавать классы и работать с их атрибутами. Теперь научимся выделять общее поведение в базовые классы и расширять его в наследниках. Разберём, как устроен полиморфизм через переопределение методов, почему в Python нет классической перегрузки, и как функция super() помогает вызывать родительскую реализацию. В финале — встроенные функции isinstance и issubclass для проверки типов и иерархии.

Что изучим

  • Четыре принципа ООП: наследование, инкапсуляция, полиморфизм, абстракция.
  • Синтаксис наследования: class Child(Parent):.
  • Переопределение методов (overriding) как механизм полиморфизма.
  • Почему в Python нет перегрузки методов по количеству аргументов.
  • Функция super() для вызова метода ближайшего родителя.
  • Многоуровневое наследование и super() в цепочке классов.
  • Неявное наследование от object.
  • isinstance и issubclass: синтаксис и примеры использования.
  • Современные практики: явный вызов super() вместо Parent.method(self) и аннотации типов.

📚 Что повторить перед изучением

  • ← Урок 69 — Практикум 17
  • Создание класса, метод __init__, параметр self, создание объектов.
  • Атрибуты класса и объекта, обращение через точку.
  • Магические методы __str__ и __repr__.

🎯 Что изучать дальше

  • → Урок 71 — Summary session 18
  • Попробуйте добавить новые роли сотрудников в иерархию Employee и вызвать их через общий список.
  • Изучите встроенные атрибуты __mro__ и __bases__, которые показывают иерархию классов.