Back to questions
IT One
Junior — Middle
74
Объясните различия в использовании одного и двойного подчеркивания в именах переменных и методов в Python.
Companies where asked
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
Таким образом, одинарное подчеркивание — это соглашение, двойное — механизм сокрытия имени.