Sobes.tech
Junior — Middle

Magyarázza el az egy és dupla aláhúzás használatának különbségeit a változók és módszerek nevében Pythonban.

sobes.tech MI

Válasz az MI-től

Pythonban az egyes aláhúzás a változó vagy metódus nevének elején (például _var) egy konvenció, amely jelzi, hogy ez a név belső használatra (védett) szánt, és nem szabad a osztály vagy modul kívül használni. Ez csak egy ajánlás, az értelmező nem tiltja a hozzáférést.

A dupla aláhúzás a név elején (például __var) aktiválja a name mangling mechanizmust — a változó vagy metódus neve az értelmező által módosul, hogy megnehezítse a hozzáférést az osztályon kívülről. Ez privát attribútumok létrehozására szolgál, amelyek nehezen felülírhatók vagy véletlenül használhatók alosztályokban.

Példa:

class MyClass:
    def __init__(self):
        self._protected = 1  # konvenció: védett attribútum
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # hozzáférés lehetséges, de nem ajánlott
# print(obj.__private)   # AttributeError-t fog eredményezni
print(obj._MyClass__private)  # hozzáférés a "privát" attribútumhoz name mangling segítségével

Tehát az egyes aláhúzás egy konvenció, a dupla pedig a név elrejtésének mechanizmusa.