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,
__varpostaje_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.