Junior — Middle
Ako v Pythone dosiahnuť skrytie vnútornej implementácie objektu a skrytie dát pred vonkajším prístupom?
sobes.tech AI
Odpoveď od AI
V Pythone je skrytie vnútornej implementácie objektu a dát dosiahnuté pomocou konvencií a mechanizmov enkapsulácie:
- Jedno podčiarknutie (_var) — naznačuje, že atribút alebo metóda je určená na interné použitie (chránené), ale technicky je prístupná zvonku.
- Dvojité podčiarknutie (__var) — vedie k name mangling (zmenám mena), čo sťažuje prístup k atribútu zvonku, napríklad,
__varsa stáva_ClassName__var. To slúži na zabránenie náhodnému prepísaniu a skrytie dát.
Príklad:
class MyClass:
def __init__(self):
self.public = "prístupné všetkým"
self._protected = "na interné použitie"
self.__private = "skryté pred vonkajším prístupom"
obj = MyClass()
print(obj.public) # prístupné
print(obj._protected) # prístupné, ale neodporúča sa
print(obj._MyClass__private) # prístup k "súkromnému" atribútu cez name mangling
Týmto spôsobom v Pythone neexistuje prísny súkromný prístup, ale existujú konvencie a mechanizmy, ktoré umožňujú skryť dáta od priameho prístupu zvonku.