Sobes.tech
Junior — Middle
59

Какова роль и назначение __ в языке Python?

Companies where asked
Effective Mobile

Answer from AI

sobes.tech AI

В Python двойное подчеркивание __ используется в нескольких контекстах:

  1. Специальные методы (магические методы) — методы с именами, заключёнными в двойные подчеркивания, например, __init__, __str__, __repr__. Они определяют поведение объектов в различных ситуациях, например, создание, преобразование в строку, арифметические операции.

  2. Сокрытие атрибутов (name mangling) — если имя атрибута начинается с двойного подчеркивания, но не заканчивается им, например, __private, Python изменяет имя атрибута внутри класса, чтобы предотвратить случайный доступ из вне (превращает в _ClassName__private). Это помогает реализовать инкапсуляцию.

  3. Конвенции — двойное подчеркивание в начале имени (без окончания) сигнализирует, что атрибут или метод предназначен для внутреннего использования класса.

Пример магического метода и 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