Sobes.tech
Junior — Middle

Обяснете разликите в използването на едно и двойно долно тире в имената на променливи и методи в Python.

sobes.tech AI

Отговор от AI

В Python единичното долно тире в началото на името на променлива или метод (например _var) е конвенция, която показва, че това име е предназначено за вътрешна употреба (защитено) и не трябва да се използва извън класа или модула. Това е само препоръка, интерпретаторът не забранява достъпа.

Двойното долно тире в началото на името (например __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

Следователно, единичното долно тире е конвенция, а двойното — механизъм за скриване на имена.