Курс 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. JMESPath в Python
  2. Оптимизация поиска в словарях
  3. Пропуск начальных строк с помощью dropwhile()
  4. Вывод с переменной через запятую
  5. Ускорение выполнения кода в Python
  6. Итераторы в Python
  7. Форматирование вывода с F-строками
  8. Условные выражения в Python
  9. Оформление кода на Python
  10. Слияние словарей в Python 3.9
  11. Импорт модулей в Python 3.12
  12. Работа со строками в Python
  13. Извлечение новостей с newspaper3k
  14. Декораторы в Python
  15. Модуль itertools: комбинации и перестановки
  16. kwargs в Python
  17. Управление асинхронными задачами с помощью Semaphore
  18. Python OrderedDict и fromkeys() — работа с словарями
  19. Настройка логгера Logzero
  20. Метод classmethod
  21. Глобальные переменные в Python
  22. Методы classmethod и staticmethod
  23. Абстракции словарей и множеств в Python
  24. Сортировка элементов с OrderedDict
  25. Нахождение максимального значения и его индекса в списке
  26. Декораторы в Python
  27. Генераторы данных
  28. Вывод переменной и строки в Python
  29. Добавление цвета в консоли
  30. Метод __iand__ для пользовательских классов
  31. Форматирование строк с % в Python
  32. Измерение времени выполнения кода
  33. Big O оптимизация
  34. Логические значения в Python
  35. Хеши в Python
  36. Оператор walrus в Python
  37. Равенство и идентичность в Python
  38. Генераторы списков
  39. Сортировка в Python
  40. Работа с каталогами в Python
  41. Копирование объектов в Python
  42. Проблема с изменяемыми аргументами

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