Sobes.tech
Назад к вопросам
Junior — Middle
86

Каким образом в Python достигается принцип инкапсуляции данных?

Компании, где спрашивали
СБЕР Бизнес
МТСМТС
ИП Калюков Н.С.
AstonAston
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 основана на соглашениях и механизмах манглинга, а не на строгих ограничениях, как в некоторых других языках.