Sobes.tech
Back to questions
Junior — Middle
74

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

Companies where asked
IT OneIT One

Answer from AI

sobes.tech AI

В 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

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