Sobes.tech
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

Այսպիսով, միակ ստորակետը սովորույթ է, իսկ երկուսը՝ անունների թաքցման մեխանիզմ։