как работает super в питоне 🚀 | Подробное объяснение и примеры использования super()
class РодительскийКласс:
def метод(self):
print("Метод из родительского класса")
class ДочернийКласс(РодительскийКласс):
def метод(self):
super().метод() # Вызываем метод родительского класса
print("Метод из дочернего класса")
объект = ДочернийКласс()
объект.метод()
В этом примере метод "метод" в дочернем классе вызывает метод "метод" родительского класса, используя "super().метод()". Таким образом, мы сначала выполняем код в методе родительского класса, а затем добавляем свой код в методе дочернего класса.
Благодаря "super" в Python мы можем легко расширять функциональность родительских классов, сохраняя при этом их основной функционал.
Детальный ответ
Как работает super в Python
Ключевое слово super в Python используется для вызова методов родительского класса. Оно позволяет получить доступ к методам, которые были переопределены в дочернем классе.
Обычно super используется внутри методов дочернего класса. Например, представим класс Child
, который наследует от класса Parent
:
class Parent:
def __init__(self):
self.name = "Родитель"
def say_hello(self):
print("Привет от родителя!")
class Child(Parent):
def __init__(self):
super().__init__()
self.age = 10
def say_hello(self):
super().say_hello()
print("Привет от ребенка!")
child = Child()
child.say_hello()
В данном примере у дочернего класса Child
есть свой собственный конструктор __init__
, который вызывает конструктор родительского класса с помощью super().__init__()
. Это позволяет наследнику использовать свойства родителя, такие как name
.
Также ребенок переопределяет метод say_hello
, но с помощью super()
вызывает метод say_hello
родительского класса и затем добавляет свое собственное приветствие.
При выполнении кода вы увидите следующий результат:
Привет от родителя!
Привет от ребенка!
Таким образом, понимание работы super
позволяет вам использовать и расширять функциональность родительского класса в дочерних классах.
Вывод
С помощью ключевого слова super в Python вы можете вызывать методы родительского класса из дочернего класса. Это позволяет наследовать и расширять функциональность родительского класса без необходимости повторного написания кода.