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