Sobes.tech
Junior — Middle

Ako sa implementuje princíp zapuzovania v jazyku Python?

sobes.tech AI

Odpoveď od AI

V Pythone je enkapsulácia realizovaná pomocou konvencií pomenovania a špeciálnych mechanizmov, pretože jazyk nemá prísnu súkromie ako v niektorých iných jazykoch.

  • Verejné atribúty a metódy — názvy bez podčiarkovníkov, dostupné všade.
  • Chránené (protected) atribúty — názvy s jedným podčiarkovníkom _atribút, signalizujú, že prvok je určený na interné použitie, ale technicky je dostupný zvonku.
  • Súkromné (private) atribúty — názvy s dvomi podčiarkovníkmi __atribút, spôsobujú mangle mena, čo sťažuje prístup zvonku triedy.

Príklad:

class MyClass:
    def __init__(self):
        self.public = "prístupné všetkým"
        self._protected = "odporúča sa nepoužívať mimo triedy"
        self.__private = "skryté pred vonkajším 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 mangle mena

Týmto spôsobom je enkapsulácia v Pythone skôr dohoda a používanie mechanizmov mangle, než prísne obmedzenia.