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.