Приватные методы при наследовании в ООП в Python
Приватные методы не наследуются. Это сделано специально, чтобы не нарушать инкапсуляцию. Давайте посмотрим на примере. Пусть у нас есть следующий родительский класс с приватным методом:
class User:
def __init__(self):
self.__name = None
def set_name(self, name):
self.__name = name
def get_name(self):
return self.__cape(self.__name)
def __cape(self, string):
return string[0].upper() + string[1:]
Пусть от родительского класса наследует следующий класс:
class Student(User):
def __init__(self):
self.__surn = None
def set_surn(self, surn):
self.__surn = surn
def get_surn(self):
return self.__surn
Пусть потомок хочет воспользоваться приватным методом родителя. Python это не разрешит и выдаст ошибку:
class Student(User):
def __init__(self):
self.__surn = None
def set_surn(self, surn):
self.__surn = surn
def get_surn(self):
return self.__cape(self.__surn) # будет ошибка
Попробуйте в классе Employee
воспользоваться приватным методом
родителя.