Объясните различия в использовании одного и двойного подчеркивания в именах переменных и методов в Python.

Это просто рекомендация, интерпретатор не запрещает доступ.

Короткий ответ

Что ответить на собеседовании

В Python одинарное подчеркивание в начале имени переменной или метода (например, var) является соглашением, указывающим, что это имя предназначено для внутреннего использования (protected), и не должно использоваться за пределами класса или модуля. Это просто рекомендация, интерпретатор не запрещает доступ.

Подробный разбор

Ответ с пояснениями

В Python одинарное подчеркивание в начале имени переменной или метода (например, _var) является соглашением, указывающим, что это имя предназначено для внутреннего использования (protected), и не должно использоваться за пределами класса или модуля. Это просто рекомендация, интерпретатор не запрещает доступ.

Двойное подчеркивание в начале имени (например, __var) запускает механизм name mangling — имя переменной или метода изменяется интерпретатором, чтобы затруднить доступ извне класса. Это используется для создания приватных атрибутов, которые сложно переопределить или случайно использовать в подклассах.

Пример:

class MyClass:
    def __init__(self):
        self._protected = 1  # соглашение: защищенный атрибут
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # доступ возможен, но не рекомендуется
# print(obj.__private)   # вызовет ошибку AttributeError
print(obj._MyClass__private)  # доступ к "приватному" атрибуту через name mangling

Таким образом, одинарное подчеркивание — это соглашение, двойное — механизм сокрытия имени.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее