Назад к вопросам
МТС
Aston
Junior — Middle
86
Каким образом в Python достигается принцип инкапсуляции данных?
Компании, где спрашивали
СБЕР Бизнес
ИП Калюков Н.С.
Effective Mobile
Ответ от нейросети
sobes.tech AI
В Python инкапсуляция достигается с помощью соглашений об именовании и специальных механизмов:
- Одно подчеркивание (_var) — обозначает, что поле или метод является защищённым (protected), то есть не предназначено для использования вне класса или его наследников.
- Два подчеркивания (__var) — вызывают манглинг имени (name mangling), что затрудняет доступ к полю извне, имитируя приватность.
Пример:
class MyClass:
def __init__(self):
self.public = 1
self._protected = 2
self.__private = 3
obj = MyClass()
print(obj.public) # 1
print(obj._protected) # 2 (но по соглашению не стоит использовать)
# print(obj.__private) # Ошибка AttributeError
print(obj._MyClass__private) # 3 (доступ через манглинг)
Таким образом, инкапсуляция в Python основана на соглашениях и механизмах манглинга, а не на строгих ограничениях, как в некоторых других языках.