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