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

В Python инкапсуляция реализована через соглашения и механизмы ограничения доступа к атрибутам и методам класса:

Короткий ответ

Что ответить на собеседовании

В Python инкапсуляция реализована через соглашения и механизмы ограничения доступа к атрибутам и методам класса:

Подробный разбор

Ответ с пояснениями

В Python инкапсуляция реализована через соглашения и механизмы ограничения доступа к атрибутам и методам класса:

  • Публичные атрибуты и методы — доступны везде.
  • Защищённые (protected) атрибуты — начинаются с одного подчёркивания _attribute. Это лишь соглашение, что такие атрибуты не предназначены для внешнего использования.
  • Приватные (private) атрибуты — начинаются с двух подчёркиваний __attribute. Python применяет механизм 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, доступ через name mangling

Таким образом, инкапсуляция в Python больше основана на соглашениях и механизмах языка, а не на строгом ограничении доступа, как в некоторых других языках.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее