Переопределение методов родителя в ООП в Python
Класс-потомок может переопределить метод родителя, создав метод с таким же именем. Давайте посмотрим на примере. Пусть у нас есть следующий родительский класс:
class User:
def __init__(self):
self.__name = None
def set_name(self, name):
self.__name = name
def get_name(self):
return self.__name
Давайте в классе-потомке создадим одноименный метод:
class Student(User):
def set_name(self, name):
pass
Как правило, переопределение методов родителя нужно для того, чтобы изменить или дополнить поведение этого метода. Давайте в нашем случае добавим проверку длины имени:
class Student(User):
def set_name(self, name):
if len(name) > 0:
self.__name = name
else:
print('student name error')
Давайте убедимся в том, что вызывается именно переопределенный метод. Для начала создадим объект класса потомка:
student = Student()
Теперь вызовем наш метод, передав в него корректное значение:
student.set_name('john')
А теперь вызовем метод, передав в него некорректное значение. В результате увидим сообщение об ошибке:
student.set_name('') # ошибка
В классе User сделайте
геттер и сеттер возраста.
В классе Employee переопределите
сеттер возраста и сделайте в нем
проверку на то, что возраст от
18 до 65 лет.