Курс 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. Вычисление натуральных логарифмов в NumPy
  2. Логирование с Logzero
  3. Обмен значений переменных в Python
  4. Работа с процессами в Python
  5. Метод __float__ в Python
  6. Повторение элементов списков
  7. Метод ipow для возведения в степень
  8. Списки в Python: синтаксис представления
  9. ChainMap.new_child() — добавление нового словаря
  10. Сравнение строк в Python
  11. Обмен данными с asyncio.Queue
  12. Установка виртуального окружения Python
  13. Удаление дубликатов в pandas
  14. Функции в Python: создание и вызов
  15. Использование модуля math
  16. Метод count() для списка
  17. Метод rxor для операции побитового исключающего «или»
  18. Преобразование range в итератор
  19. Создание словаря и множества
  20. Работа с f-строками 2.0
  21. Измерение времени выполнения кода
  22. Создание виртуальной среды
  23. Преобразование данных в Python
  24. Измерение времени выполнения кода
  25. Работа с Path в Python
  26. Вычисление фазы комплексного числа
  27. Многострочные комментарии в Python
  28. Округление дробей в Python
  29. Оформление кода на Python
  30. Функции any() и all() в Python
  31. Работа с путями в Python
  32. Метод округления чисел
  33. Переменные в Python
  34. Перевернуть список в Python
  35. Генераторные выражения и islice.
  36. Конвертация коллекций в Python.
  37. Метод hash в Python
  38. Применение функции к списку
  39. Метод __irshift__ для побитового сдвига вправо
  40. Профилирование данных с Pandas
  41. Установка и использование Telegram API в Python
  42. Метод remove() для удаления элемента из списка
  43. Удаление файлов с shutil.os.remove()
  44. Каналы Senior: Python, Java, Frontend, SQL, C++
  45. Инверсия списка и строки
  46. Функция с **kwargs в Python

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