Back to questions
Junior — Middle
53
Какое отличие между одним и двумя подчеркиваниями в именах переменных или методов?
Answer from AI
sobes.tech AI
В Python одинарное подчеркивание в начале имени (например, _variable) используется как соглашение, обозначающее, что переменная или метод являются внутренними (protected) и не предназначены для использования вне класса или модуля. Это не запрещает доступ, но сигнализирует другим разработчикам о внутреннем использовании.
Двойное подчеркивание в начале имени (например, __variable) активирует механизм name mangling — изменение имени переменной для предотвращения конфликтов имен в подклассах. Python изменяет имя переменной, добавляя к нему имя класса, что затрудняет прямой доступ к ней извне.
Пример:
class MyClass:
def __init__(self):
self._protected = 1 # внутреннее использование
self.__private = 2 # имя изменится на _MyClass__private
obj = MyClass()
print(obj._protected) # доступ возможен
# print(obj.__private) # вызовет ошибку AttributeError
print(obj._MyClass__private) # доступ через name mangling возможен