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

В чем разница между атрибутами private, protected и public

В Python все атрибуты по умолчанию public (доступны отовсюду).

Protected (_attr):

  • Условно защищенный (по соглашению, не строго).
  • Доступен везде, но IDE и линтеры предупреждают.

Private (__attr):

  • Имя модифицируется (_ClassName__attr).
  • Нельзя обратиться напрямую через obj.__attr, но можно через obj._ClassName__attr.

Пример:

python
class Example:
    def __init__(self):
        self.public = 1    # Доступно везде
        self._protected = 2  # "Не трогай" (но можно)
        self.__private = 3   # Доступ через _Example__private

obj = Example()
print(obj.public)          # 1
print(obj._protected)      # 2 (но не рекомендуется)
print(obj.__private)       # Ошибка!  
print(obj._Example__private)  # 3 (но так делать не стоит)

Важно: Python доверяет разработчику — защита лишь на уровне соглашений.

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

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

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

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