Приватные свойства при наследовании в ООП в 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):
pass
Создадим объект потомка:
student = Student()
Воспользуемся методом родителя, чтобы записать его приватное свойство:
student.set_name('john')
Воспользуемся методом родителя, чтобы прочитать его приватное свойство:
name = student.get_name()
print(name)
Дан следующий класс-родитель:
class User:
def __init__(self):
self.__name = None
self.__surn = None
def set_name(self, name):
self.__name = name
def get_name(self):
return self.__name
def set_surn(self, surn):
self.__surn = surn
def get_surn(self):
return self.__surn
Сделайте класс Employee,
который будет наследовать
от этого родителя.
Создайте объект класса Employee
и вызовите унаследованные
сеттеры и геттеры.
В классе Employee сделайте
следующий метод:
def get_full(self):
return self.__name + ' ' + self.__surn
Убедитесь, что код метода приведет к ошибке.