> Какие механизмы инкапсуляции реализованы в Python? (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: ИП Калюков Николай Сергеевич
Стек: Python
> Пример ответа
В Python инкапсуляция реализуется на уровне соглашений и механизмов именования, а не строгих модификаторов доступа (как private в Java). Основные механизмы:
-
Соглашение об именовании с одним подчеркиванием (
_name) - защищённый атрибут. Сигнализирует, что атрибут предназначен для внутреннего использования, но технически доступен извне. Например,self._internal_value. -
Name mangling с двойным подчеркиванием (
__name) - атрибут с именем вида__nameвнутри класса автоматически преобразуется в_ClassName__name. Это предотвращает случайное переопределение в подклассах. Например,self.__secretстанетself._MyClass__secret. -
Свойства (
@property) - позволяют контролировать доступ к атрибутам через геттеры, сеттеры и делейтеры, скрывая внутреннюю реализацию. Например:PYTHONclass Temperature:def __init__(self, celsius):self._celsius = celsius@propertydef fahrenheit(self):return self._celsius * 9/5 + 32 -
Специальные методы (
__slots__) - ограничивают набор атрибутов экземпляра, экономя память и предотвращая случайное добавление новых атрибутов.
Важно: Python полагается на дисциплину разработчика - инкапсуляция здесь "по соглашению", а не принудительная.
> Похожие задачи по Python
Что выбрать для кэша рядом с базой данных: Redis, RabbitMQ или Kafka?
Как работает асинхронный код в Python: конкурентный или параллельный, в одном или нескольких потоках?
Что означает двойное подчеркивание в начале имени метода или атрибута класса в Python?
Какие атрибуты и методы считаются публичными и приватными в Python и как реализуется сокрытие данных?
> Похожие задачи по backend
Что выбрать для кэша рядом с базой данных: Redis, RabbitMQ или Kafka?
Как работает асинхронный код в Python: конкурентный или параллельный, в одном или нескольких потоках?
Что означает двойное подчеркивание в начале имени метода или атрибута класса в Python?
Какие атрибуты и методы считаются публичными и приватными в Python и как реализуется сокрытие данных?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью