Sobes.tech
Junior — Middle

Kako se u Pythonu postiže skrivanje unutrašnje implementacije objekta i skrivene podataka od spoljnog pristupa?

sobes.tech АИ

Одговор од АИ

U Python-u, skrivanje interne implementacije objekta i podataka postiže se pomoću konvencija i mehanizama enkapsulacije:

  • Jedno podvlako (_var) — označava da je atribut ili metoda namenjena za internu upotrebu (zaštićeno), ali je tehnički dostupno spolja.
  • Dva podvlaka (__var) — dovodi do name mangling (promene imena), što otežava pristup atributu spolja, na primer, __var postaje _ClassName__var. Ovo služi za sprečavanje slučnog prepisivanja i skrivanje podataka.

Primer:

class MyClass:
    def __init__(self):
        self.public = "dostupno svima"
        self._protected = "za internu upotrebu"
        self.__private = "skriveno od spoljnog pristupa"

obj = MyClass()
print(obj.public)          # dostupno
print(obj._protected)      # dostupno, ali se ne preporučuje
print(obj._MyClass__private)  # pristup "privatnom" atributu putem name mangling-a

Na ovaj način, u Python-u ne postoji strogi privatni pristup, ali postoje konvencije i mehanizmi koji omogućavaju skrivanje podataka od direktnog pristupa spolja.