Конструктор при наследовании в ООП в Python
При наследовании можно переопределять конструктор родителя. Давайте посмотрим на примере. Пусть у нас есть следующий класс родителя:
class User:
def __init__(self, name, surn):
self.__name = name
self.__surn = surn
def get_name(self):
return self.__name
def get_surn(self):
return self.__surn
Пусть от родительского класса наследует следующий класс:
class Student(User):
pass
Пусть мы хотим в классе-потомке расширить конструктор, добавив в него дополнительные параметры:
class Student(User):
def __init__(self, name, surn, year):
pass
В этом случае нам обязательно нужно
первой строкой вызвать конструктор
родителя через super().__init__:
class Student(User):
def __init__(self, name, surn, year):
super().__init__(name, surn)
Вызов super().__init__ по сути является
конструктором родителя. Поэтому
передадим в него требуемые параметры:
class Student(User):
def __init__(self, name, surn, year):
super().__init__(name, surn)
Теперь в потомке год обучения запишем в свое свойство потомка:
class Student(User):
def __init__(self, name, surn, year):
super().__init__(name, surn)
self.__year = year
Сделаем геттер для года обучения:
class Student(User):
def __init__(self, name, surn, year):
super().__init__(name, surn)
self.__year = year
def get_year(self):
return self.__year
Пусть класс Employee наследует
от класса User из данного
урока.
Переопределите в классе Employee
конструктор родителя, добавив в него
параметр с возрастом и зарплатой.
Сделайте геттеры для возраста и зарплаты.