Курс 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. Профилирование с cProfile
  2. Проектирование Singleton с метаклассом
  3. Создание Radio кнопок в tkinter
  4. Динамическая типизация в Python
  5. Срезы в Python
  6. Скрытие вывода данных
  7. Глобальные переменные в Python
  8. Удаление URL-адресов в Python
  9. Разработка Telegram-ботов
  10. Избегание изменяемых аргументов
  11. Синхронизация потоков с time.sleep()
  12. Работа с индексами списков
  13. Рациональные числа в Python
  14. Использование эмодзи в Python
  15. Поиск с библиотекой Google
  16. Декоратор total_ordering для класса Point
  17. Подсчет количества элементов в списке
  18. Реализация операции -= для пользовательского класса
  19. Удаление дубликатов из списка
  20. Генерация UUID в Python
  21. Создание обратного итератора
  22. Извлечение чисел из текста
  23. Работа со слайсами
  24. Бесконечные списки в Python
  25. Управление IP-адресами через прокси
  26. Работа с процессами в Python
  27. Вывод баннеров
  28. Оптимизация памяти с slots
  29. Поиск частых элементов в списке
  30. Работа с PosixPath() в Python
  31. Pillow: работа с изображениями
  32. Условное добавление элементов в список
  33. Создание инструмента обнаружения плагиата
  34. Создание новых функций через partial
  35. Расчет времени выполнения программы
  36. Функции map, filter и reduce
  37. Поиск индексов подстроки
  38. Работа с переменными в Python
  39. Удаление ресурса в Python
  40. Класс-оболочка для словарей
  41. Декораторы классов
  42. Установка Python3.7 и PIP
  43. Работа с словарями в Python
  44. Замена атрибута в именованном кортеже

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