Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpIhCOM 33 of 174 menu
◀ ▶

Вызов переопределенного метода в ООП в Python

При переопределении потомок теряет доступ к переопределенному методу родителя. Однако, получить к нему доступ все равно можно. Это делается с помощью функции super, которая указывает на родительский класс.

Давайте посмотрим на примере, когда нам может понадобится доступ к родительскому методу. Пусть у нас есть следующий класс-родитель:

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): if len(name) > 0: self.__name = name else: print('student name error')

Можно заметить, что в переопределенном методе при выполнения условия фактически выполняется код родительского метода. Получается не нужное дублирование кода.

Можно от него избавиться, если вызвать метод родителя. Давайте сделаем это:

class Student(User): def set_name(self, name): if len(name) > 0: super().set_name(name) # метод родителя else: print('student name error')

Дан следующий код:

class User: def __init__(self): self.__age = None def set_age(self, age): if age >= 0: self.__age = age else: print('need age more 0') class Employee(User): def set_age(self, age): if age <= 120: if age >= 0: self.__age = age else: print('need age more 0') else: print('need age less 120')

В классе Employee исправьте упростите сеттер возраста, использовав оригинальный метод родителя.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить