🖥 Возможно ли при наследовании методы объединять, а не заменять?



Дан родительский класс и дочерний, который наследуется от него



class Parent():

def test(self):

print('inside parent')



class Child(Parent):

def test(self):

print('inside child')




при вызове метода экземпляра дочернего класса с тем же названием вызывается функция из дочернего класса, перезаписываем родительскую



>>> b1 = Child()

>>> b1.test()

inside child

>>>




Вопрос: можно ли сделать так чтобы дочерний метод не перезаписывал родительский, а добавлялся к нему и они выполнялись бы вместе и поочередно (сначала родительский потом дочерний)? Чтобы получилось вот так:



>>> b1.test()

inside parent

inside child

>>>




Ответ



Для этого можно вызвать функцию в родительском классе при помощи super().



class Parent:

def test(self):

print('inside parent')





class Child(Parent):

def test(self):

super().test()

print('inside child')





b1 = Child()

b1.test()

Вывод:



inside parent

inside child




Подробнее про функцию super() можете почитать в документации.



#junior



@python_job_interview