Как вызвать метод из родительского класса python?

Аватар пользователя Карина Абдуллаева
Карина Абдуллаева
13 февраля 2023

Для вызова метода из родительского класса в Python есть два способа:

  1. Явное обращение к методу предка
  2. Функция super()

Примеры:

class Counter:
    def __init__(self):
        self.value = 0

    def inc(self):
        self.value += 1

    def dec(self):
        self.value -= 1

# Создаем класс-потомок, при вызове inc увеличивающих значение дважды
# Вариант 1 - с прямым обращением к предку:
class DoubleCounter(Counter):
    def inc(self):
        Counter.inc(self)  # явно обращаемся к методу класса предка
        Counter.inc(self)  # и передаем ссылку на экземпляр

# Вариант 2 - с применением функции super():
class DoubleCounter(Counter):
    def inc(self):
        super().inc()
        super().inc()


num = DoubleCounter()
num.value # 0
num.inc() # В обоих случаях, наследованный метод inc() будет работать одинаково
num.value # 2

Функция super() названа в честь названия класса-предка: "superclass". Потому что благодаря ей мы получаем ссылку на атрибут предка и заменяем обращение self, создавая таким образом связанный с текущим классом метод, который будет полноценной "оригинальной версией" из класса-предка. При чем если предок сменится, то super в описании класса учтет изменения, и мы получим доступ к поведению нового предка.

0 0