Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
В программировании на Python часто встречается ситуация, когда один класс наследует функциональность другого класса. Это называется наследованием и позволяет избегать дублирования кода.
Допустим, есть базовый класс Animal
, который определяет общее поведение животных, и класс Dog
, который наследует от Animal
и, помимо общего поведения, имеет свои специфические методы и свойства.
class Animal: def __init__(self, name): self.name = name def speak(self): pass class Dog(Animal): def __init__(self, name): Animal.__init__(self, name) def speak(self): return "Woof!"
В этом примере, чтобы инициализировать класс Dog
, мы явно вызываем инициализатор базового класса Animal.__init__
.
Однако, Python предлагает более элегантный способ делать это с помощью функции super()
. super()
возвращает временный объект суперкласса, который позволяет вызывать его методы. Это особенно полезно в случае множественного наследования, так как он следует MRO (method resolution order), обеспечивая правильный порядок вызова методов.
class Animal: def __init__(self, name): self.name = name def speak(self): pass class Dog(Animal): def __init__(self, name): super().__init__(name) def speak(self): return "Woof!"
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
В этом случае, super().__init__(name)
делает то же самое, что и Animal.__init__(self, name)
, но делает код более читаемым и безопасным.
Таким образом, super()
— это мощный инструмент, который позволяет сохранить принцип DRY (Don’t Repeat Yourself) и облегчает работу с наследованием.
Добавить комментарий