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

Есть ли доступ к приватным методам и переменным в Python

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

  1. Соглашение: если имя начинается с одного подчеркивания (например, _var), это сигнализирует, что атрибут предназначен для внутреннего использования (protected). Доступ к нему возможен, но не рекомендуется.
  1. Name Mangling: если имя начинается с двух подчеркиваний (например, __var), Python модифицирует его, добавляя имя класса (_ClassName__var). Это усложняет доступ, но не делает его невозможным.

Пример:

python
class MyClass:
    def __init__(self):
        self._protected = 123
        self.__private = 456

obj = MyClass()
print(obj._protected)  # 123 (доступ есть, но не рекомендуется)
print(obj._MyClass__private)  # 456 (доступ через name mangling)

Вывод: технически доступ есть всегда, но соглашения и name mangling помогают избежать случайного использования "приватных" членов.

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

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

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

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