Junior — Middle
Wyjaśnij różnice w używaniu pojedynczego i podwójnego podkreślenia w nazwach zmiennych i metod w Pythonie.
sobes.tech AI
Odpowiedź od AI
W Pythonie pojedynczy podkreślenie na początku nazwy zmiennej lub metody (np. _var) jest konwencją wskazującą, że ta nazwa jest przeznaczona do użytku wewnętrznego (chronione) i nie powinna być używana poza klasą lub modułem. To tylko zalecenie, interpreter nie zabrania dostępu.
Podwójne podkreślenie na początku nazwy (np. __var) uruchamia mechanizm name mangling — nazwa zmiennej lub metody jest zmieniana przez interpreter, aby utrudnić dostęp spoza klasy. Służy to do tworzenia prywatnych atrybutów, które są trudne do nadpisania lub przypadkowego użycia w podklasach.
Przykład:
class MyClass:
def __init__(self):
self._protected = 1 # konwencja: chroniony atrybut
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # dostęp możliwy, ale niezalecany
# print(obj.__private) # spowoduje błąd AttributeError
print(obj._MyClass__private) # dostęp do "prywatnego" atrybutu przez name mangling
Zatem pojedyncze podkreślenie to konwencja, a podwójne to mechanizm ukrywania nazw.