Как вызвать метод родительского класса через super()

«Как вызвать метод родительского класса через super()» — вопрос из категории ООП, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример в Python:

class Vehicle:
    def __init__(self, brand):
        self.brand = brand
        print(f"Vehicle {brand} created")

class Car(Vehicle):
    def __init__(self, brand, model):
        # Вызов __init__ родительского класса Vehicle
        super().__init__(brand)
        self.model = model
        print(f"Car model: {model}")

my_car = Car("Toyota", "Camry")
# Вывод:
# Vehicle Toyota created
# Car model: Camry

Практическое применение:

  1. В конструкторах (__init__): Гарантирует корректную инициализацию родительской части объекта.
  2. При переопределении методов: Позволяет выполнить код родителя, а затем добавить новую логику.
    
    class Logger:
    def log(self, message):
        print(f"LOG: {message}")

class TimedLogger(Logger): def log(self, message):

Сначала выполняем стандартное логирование

    super().log(message)
    # Затем добавляем временную метку
    print(f"Timestamp: {time.time()}")


**Важно:** В Python `super()` корректно работает с множественным наследованием, следуя порядку разрешения методов (MRO).