Sobes.tech
Junior — Middle

Vysvetlite rozdiely v používaní jedného a dvojitého podčiarknutia v menách premenných a metód v Pythone.

sobes.tech AI

Odpoveď od AI

V Pythone je podčiarknutie na začiatku mena premennej alebo metódy (napríklad _var) konvenciou, ktorá naznačuje, že toto meno je určené na interné použitie (chránené) a nemalo by sa používať mimo triedy alebo modulu. Je to len odporúčanie, interpretátor nebráni prístupu.

Dvojité podčiarknutie na začiatku mena (napríklad __var) aktivuje mechanizmus name mangling — meno premennej alebo metódy je zmenené interpretátorom, aby sťažilo prístup zvonku z triedy. Toto sa používa na vytváranie súkromných atribútov, ktoré sú ťažko prepísateľné alebo náhodne použiteľné v podtriedach.

Príklad:

class MyClass:
    def __init__(self):
        self._protected = 1  # konvencia: chránený atribút
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # prístup možný, ale neodporúča sa
# print(obj.__private)   # spôsobí chybu AttributeError
print(obj._MyClass__private)  # prístup k "súkromnému" atribútu cez name mangling

Takže, jednoduché podčiarknutie je konvencia, dvojité je mechanizmus skrytia mena.