Курс Python → Множественное наследование в Python

Множественное наследование в Python позволяет классу наследовать атрибуты и методы от нескольких родительских классов. Однако, при использовании множественного наследования без вызова метода super(), может возникнуть проблема с порядком вызова методов у родительских классов. Давайте рассмотрим простой пример:


class A:
    def method(self):
        print("Метод из класса A")

class B:
    def method(self):
        print("Метод из класса B")

class C(A, B):
    pass

c = C()
c.method()

В данном примере класс С наследует методы от классов A и B. Однако, при вызове метода method() у объекта класса C, будет вызван метод из класса A, так как в определении класса C первым указан класс A. Это может привести к нежелательным результатам, если ожидался вызов метода из класса B.

Для избежания подобных проблем рекомендуется использовать метод super(), который позволяет вызывать методы у родительских классов в правильном порядке. Перепишем наш пример с использованием super():


class A:
    def method(self):
        print("Метод из класса A")

class B:
    def method(self):
        print("Метод из класса B")

class C(A, B):
    def method(self):
        super().method()

c = C()
c.method()

Теперь при вызове метода method() у объекта класса C будет вызван метод из класса B, так как метод super().method() вызывает метод у следующего родительского класса в цепочке наследования. Использование метода super() делает код более читаемым и предсказуемым, избегая конфликтов при множественном наследовании.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Оператор is в Python
  2. Метод count() для списка
  3. Big O оптимизация
  4. Поиск анаграмм с Counter
  5. Раздувающийся словарь в Python
  6. Метод get для словарей
  7. Сравнение def и lambda функций в Python
  8. Метод join() для объединения строк
  9. Оптимизация памяти с slots
  10. Операторы объединения в Python 3.9
  11. Автоматизация с Python
  12. Модуль antigravity: генерация координат
  13. Копирование объектов в Python
  14. Списковое включение в Python
  15. PUT запрос для обновления данных
  16. Определение функций с необязательными аргументами
  17. Python 3.12: Псевдонимы типов
  18. Глобальные переменные в Python
  19. Объединение словарей в Python
  20. Создание новых списков в Python
  21. split() — разделение строки
  22. Генераторы в Python
  23. Defaultdict в Python
  24. Проверка дубликатов в Python
  25. Генераторные функции в Python
  26. Цикл for в Python
  27. Объединение списков в строку
  28. Руководство по Pymorphy2
  29. Конвертация коллекций в Python.
  30. Создание объекта времени
  31. Склеивание строк через метод join()
  32. Переопределение метода delitem в Python
  33. Идентификатор объекта в Python
  34. Переопределение метода __pow__
  35. Библиотека sh: использование команд bash в Python
  36. Генераторы в Python
  37. Оператор морж в Python 3.8
  38. Цикл for в Python
  39. Рекурсия для обращения строки
  40. Разрешение имен в Python
  41. Получение имени функции с помощью inspect
  42. Изменение элемента списка
  43. Работа с итераторами в Python
  44. Профилирование кода на Python

Marketello читают маркетологи из крутых компаний