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.