Sobes.tech
Middle+

Kā Python tiek īstenota inkapsulācija? Pastāsti man par piekļuves modifikatoriem.

sobes.tech AI

Atbilde no AI

Pythonā inkapsulācija tiek īstenota, izmantojot nosaukšanas konvencijas un klases īpašības, jo citās valodās (private, protected, public) nav stingru piekļuves modifikatoru.

  • Publiski atribūti un metodes — nosaukumi bez apakšsvītrām, pieejami visur.
  • Aizsargāti (protected) — nosaukumi ar vienu apakšsvītru _var. Tas ir konvencija, kas norāda, ka atribūts vai metode ir paredzēta iekšējai lietošanai, bet tehniski ir pieejama ārpusē.
  • Privāti (private) — nosaukumi ar divām apakšsvītrām __var. Python izmanto nosaukumu mangling, mainot atribūta nosaukumu klasē, lai sarežģītu piekļuvi no ārpuses.

Piemērs:

class MyClass:
    def __init__(self):
        self.public = "pieejams visiem"
        self._protected = "ieteicams nelietot ārpus klases un mantojošajiem"
        self.__private = "slēpts no tiešas piekļuves"

obj = MyClass()
print(obj.public)        # darbojas
print(obj._protected)    # darbojas, bet nav ieteicams
# print(obj.__private)   # radīs kļūdu
print(obj._MyClass__private)  # piekļuve caur mangling

Tādējādi, inkapsulācija Pythonā ir vairāk vienošanās un mangling mehānisms, nevis stingri piekļuves modifikatori.