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

Есть ли инкапсуляция в Python

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

  • Публичные атрибуты – доступны отовсюду (например, self.value).
  • Защищённые атрибуты – обозначаются одним подчёркиванием (_value), но это лишь соглашение, доступ не ограничен.
  • Приватные атрибуты – два подчёркивания (__value), интерпретатор искажает имя (_ClassName__value), что затрудняет доступ извне, но не делает его невозможным.

Пример:

python
class Example:
    def __init__(self):
        self.public = 1      # публичный
        self._protected = 2  # защищённый (соглашение)
        self.__private = 3   # приватный (name mangling)

obj = Example()
print(obj.public)           # 1
print(obj._protected)        # 2 (но IDE может предупредить)
print(obj._Example__private) # 3 (доступ через искажённое имя)

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

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

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

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

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