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
Следователно, единичното долно тире е конвенция, а двойното — механизъм за скриване на имена.