Sobes.tech
Junior — Middle

Paaiškinkite skirtumus naudojant vieną ir dvigubą pabraukimą Python kalboje kintamųjų ir metodų pavadinimuose.

sobes.tech AI

Atsakymas iš AI

Python'e vienkartinis pabraukimas pradžioje vardo (pvz., _var) yra konvencija, nurodanti, kad šis vardas skirtas tik vidiniam naudojimui (apsaugotas) ir neturėtų būti naudojamas už klasės ar modulio ribų. Tai tik rekomendacija, interpretatorius neblokuoja prieigos.

Dvigubas pabraukimas pradžioje (pvz., __var) aktyvuoja name mangling mechanizmą — kintamojo ar metodo pavadinimas keičiasi interpretatoriaus, kad apsunkintų prieigą iš išorės. Tai naudojama kuriant privačius atributus, kurie yra sunkiai perrašomi ar atsitiktinai naudojami pogrupiuose.

Pavyzdys:

class MyClass:
    def __init__(self):
        self._protected = 1  # konvencija: apsaugotas atributas
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # prieiga įmanoma, bet nerekomenduojama
# print(obj.__private)   # sukels AttributeError
print(obj._MyClass__private)  # prieiga prie "privataus" atributo per name mangling

Taigi, viengubas pabraukimas — konvencija, dvigubas — vardų slėpimo mechanizmas.