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

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: ИП Калюков Николай Сергеевич

Стек: Python

> Пример ответа

В Python инкапсуляция реализуется на уровне соглашений и механизмов именования, а не строгих модификаторов доступа (как private в Java). Основные механизмы:

  1. Соглашение об именовании с одним подчеркиванием (_name) - защищённый атрибут. Сигнализирует, что атрибут предназначен для внутреннего использования, но технически доступен извне. Например, self._internal_value.

  2. Name mangling с двойным подчеркиванием (__name) - атрибут с именем вида __name внутри класса автоматически преобразуется в _ClassName__name. Это предотвращает случайное переопределение в подклассах. Например, self.__secret станет self._MyClass__secret.

  3. Свойства (@property) - позволяют контролировать доступ к атрибутам через геттеры, сеттеры и делейтеры, скрывая внутреннюю реализацию. Например:

    PYTHON
    class Temperature:
    def __init__(self, celsius):
    self._celsius = celsius
    @property
    def fahrenheit(self):
    return self._celsius * 9/5 + 32
  4. Специальные методы (__slots__) - ограничивают набор атрибутов экземпляра, экономя память и предотвращая случайное добавление новых атрибутов.

Важно: Python полагается на дисциплину разработчика - инкапсуляция здесь "по соглашению", а не принудительная.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью