Какова роль и назначение __ в языке Python?
Answer from AI
sobes.tech AI
В Python двойное подчеркивание __ используется в нескольких контекстах:
-
Специальные методы (магические методы) — методы с именами, заключёнными в двойные подчеркивания, например,
__init__,__str__,__repr__. Они определяют поведение объектов в различных ситуациях, например, создание, преобразование в строку, арифметические операции. -
Сокрытие атрибутов (name mangling) — если имя атрибута начинается с двойного подчеркивания, но не заканчивается им, например,
__private, Python изменяет имя атрибута внутри класса, чтобы предотвратить случайный доступ из вне (превращает в_ClassName__private). Это помогает реализовать инкапсуляцию. -
Конвенции — двойное подчеркивание в начале имени (без окончания) сигнализирует, что атрибут или метод предназначен для внутреннего использования класса.
Пример магического метода и name mangling:
class MyClass:
def __init__(self, value):
self.__value = value # приватный атрибут
def __str__(self):
return f"MyClass with value {self.__value}"
obj = MyClass(10)
print(obj) # вызовет __str__
# print(obj.__value) # вызовет ошибку AttributeError
print(obj._MyClass__value) # доступ к "приватному" атрибуту через name mangling