Встречается на собеседованиях • сегодня

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

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

  • Публичные атрибуты: обычные имена (var)
  • Защищённые (protected): одно подчёркивание (_var). Это соглашение, что атрибут не предназначен для внешнего использования, но доступ остаётся.
  • Приватные (private): два подчёркивания (__var). Интерпретатор искажает имя (_ClassName__var), что затрудняет доступ извне, но не блокирует полностью.

Пример:

python
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._MyClass__private) # 3 (обход приватности)

Для управления доступом используют декораторы @property, @attr.setter.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы