Junior — Middle
Ներկայացրեք տարբերությունները մեկ և երկու ստորակետների օգտագործման մեջ փոփոխականների և մեթոդների անուններում Python-ում.
sobes.tech AI
Պատասխան AI-ից
Python-ում միակ ստորակետը անունների սկզբում (օրինակ, _var) սովորույթ է, որը ցույց է տալիս, որ դա անունը նախատեսված է ներքին օգտագործման համար (պաշտպանված) և չի պետք օգտագործել դասից կամ մոդուլից դուրս: Դա պարզապես առաջարկություն է, ինտերպրետորը չի արգելում մուտքը:
Երկակի ստորակետը անունի սկզբում (օրինակ, __var) ակտիվացնում է name mangling մեխանիզմը — փոփոխականի կամ մեթոդի անունը փոխվում է ինտերպրետորով, որպեսզի դժվարացվի մուտքը դասից դուրս: Սա օգտագործվում է մասնավոր հատկություններ ստեղծելու համար, որոնք դժվար է վերագրել կամ պատահական օգտագործել ենթակլասներում:
Օրինակ՝
class MyClass:
def __init__(self):
self._protected = 1 # սովորույթ՝ պաշտպանված հատկություն
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # մուտքը հնարավոր է, բայց չի խորհուրդ տրվում
# print(obj.__private) # կհանգեցնի AttributeError- ի
print(obj._MyClass__private) # մուտք դեպի "անձնական" հատկություն via name mangling
Այսպիսով, միակ ստորակետը սովորույթ է, իսկ երկուսը՝ անունների թաքցման մեխանիզմ։