Назад к вопросам
Junior — Middle
65
Какие особенности наследования и инкапсуляции в объектно-ориентированном программировании на Python вы знаете?
Компании, где спрашивали
LC-Group
Ответ от нейросети
sobes.tech AI
В Python наследование и инкапсуляция имеют свои особенности:
Наследование:
- Python поддерживает множественное наследование, то есть класс может наследоваться от нескольких базовых классов.
- Для вызова методов базового класса используется функция
super().
Инкапсуляция:
- В Python нет строгой приватности, но есть соглашения:
- Атрибуты и методы, начинающиеся с одного подчеркивания
_, считаются защищёнными (protected) и не предназначены для внешнего использования. - Атрибуты с двойным подчеркиванием
__вызывают манглинг имени (name mangling), что затрудняет доступ извне, но не делает их полностью приватными.
- Атрибуты и методы, начинающиеся с одного подчеркивания
Пример:
class Base:
def __init__(self):
self._protected = "защищённый"
self.__private = "приватный"
def get_private(self):
return self.__private
class Child(Base):
def show(self):
print(self._protected) # доступен
# print(self.__private) # вызовет ошибку
print(self.get_private()) # доступ через метод
c = Child()
c.show()
Таким образом, инкапсуляция в Python больше основана на соглашениях, а не на строгих ограничениях.