Middle+
Ako sa realizuje enkapsulácia v Pythone? Porozprávaj mi o modifikátoroch prístupu.
sobes.tech AI
Odpoveď od AI
V Pythone je enkapsulácia realizovaná prostredníctvom konvencií pomenovania a vlastností tried, pretože neexistujú prísne modifikátory prístupu ako v iných jazykoch (private, protected, public).
- Verejné atribúty a metódy — názvy bez podčiarkovníkov, dostupné všade.
- Chránené (protected) — názvy s jedným podčiarkovníkom
_var. Ide o konvenciu, ktorá naznačuje, že atribút alebo metóda je určená na interné použitie, ale technicky je dostupná zvonku. - Súkromné (private) — názvy s dvomi podčiarkovníkmi
__var. Python aplikuje mangling názvov, mení názov atribútu vnútri triedy, aby sťažilo prístup zvonku.
Príklad:
class MyClass:
def __init__(self):
self.public = "prístupné všetkým"
self._protected = "odporúča sa nepoužívať mimo triedy a dediace"
self.__private = "skryté pred priamym prístupom"
obj = MyClass()
print(obj.public) # funguje
print(obj._protected) # funguje, ale neodporúča sa
# print(obj.__private) # spôsobí chybu
print(obj._MyClass__private) # prístup cez mangling názvov
Teda, enkapsulácia v Pythone je skôr dohoda a mechanizmus manglingu, než prísne modifikátory prístupu.