Sobes.tech
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-ում ինկապսուլյացիան ավելի շատ համաձայնության և մանգլինգի մեխանիզմ է, քան խիստ մուտքի մոդիֆիկատորներ։