Sobes.tech
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, __var sa 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.