Чтобы вызвать конструктор класса Parent без прямого вызова Parent.init() и без изменения поведения Parent, можно использовать функцию super() в классе Child.
2. Python. Вызвать функцию класса
Чтобы вызвать конструктор класса Parent без прямого вызова Parent.init() и без изменения поведения Parent, можно использовать функцию super() в классе Child.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
2. Python. Вызвать функцию класса
Описание:
Требуется реализовать вызов функции print 2x классов: Parent, Child.
При двух ограничениях: 1 - нельзя писать вызов Parent класса прямым текстом. 2 - нельзя менять поведение класса Parent
Можно менять поведения класса Child
Результат вывести на экран.
Входные данные:
class Parent:
def init(self):
print("Parent")
class Child(Parent):
def init(self):
print("Child")
Результат:
Parent
Child
Ответ
Чтобы вызвать конструктор класса Parent без прямого вызова Parent.init() и без изменения поведения Parent, можно использовать функцию super() в классе Child.
Пример решения:
class Parent:
def __init__(self):
print("Parent")
class Child(Parent):
def __init__(self):
super().__init__() # вызов конструктора Parent без прямого упоминания Parent
print("Child")
child = Child()
Вывод будет:
Parent
Child
Таким образом, мы не меняем класс Parent и не вызываем Parent напрямую, а используем super() для вызова родительского конструктора.