Функция super() в Python: вызов методов родительского класса

Python Функция super() в Python: вызов методов родительского класса


Функция super() в Python используется для вызова методов родительского класса. В этой статье мы рассмотрим, что такое super(), как он работает, и как его можно использовать.

Что такое super() в Python?

super() - это функция, которая позволяет вызывать методы родительского класса в дочернем классе. Она используется, когда нужно вызвать методы родительского класса в дочернем классе, чтобы избежать дублирования кода и улучшить его читаемость.

Функция super() можно использовать для вызова методов как в методах, так и в конструкторах дочернего класса.

Как работает функция super() в Python?

Когда мы создаем дочерний класс, он наследует все атрибуты и методы родительского класса. Для того, чтобы вызвать метод родительского класса, мы можем использовать функцию super().

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

Пример использования super() в Python

Рассмотрим пример, который показывает, как использовать super() для вызова метода родительского класса.

main.py
class Animal:
    def __init__(self, name):
        self.name = name

    def make_sound(self):
        print("The animal makes a sound")

class Dog(Animal):
    def __init__(self, name):
        super().__init__(name)

    def make_sound(self):
        super().make_sound()
        print("The dog barks")

my_dog = Dog("Buddy")
my_dog.make_sound()

В этом примере у нас есть два класса: Animal и Dog. Класс Dog наследует от Animal.

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

Результат выполнения этого кода будет:

Терминал
>>> The animal makes a sound
>>> The dog barks

В этом примере мы вызываем метод make_sound() родительского класса с помощью super(), а затем добавляем к нему свой код, чтобы сделать ту же самую вещь, но с дополнительным функционалом.