Junior — Middle
Hogyan érhető el Pythonban egy objektum belső megvalósításának elrejtése és az adatok elrejtése a külső hozzáféréstől?
sobes.tech MI
Válasz az MI-től
Pythonban az objektum belső megvalósításának és adatoknak a rejtése konvenciók és kapszulázási mechanizmusok segítségével érhető el:
- Egy aláhúzás (_var) — jelzi, hogy az attribútum vagy metódus belső használatra szánt (védett), de technikailag külsőleg elérhető.
- Két aláhúzás (__var) — name mangling (névkeverés) eredményéhez vezet, ami megnehezíti az attribútum külső elérését, például,
__var_ClassName__varlesz. Ez a véletlen felülírások megelőzésére és az adatok elrejtésére szolgál.
Példa:
class MyClass:
def __init__(self):
self.public = "mindenki számára elérhető"
self._protected = "belső használatra"
self.__private = "külső hozzáféréstől elrejtve"
obj = MyClass()
print(obj.public) # elérhető
print(obj._protected) # elérhető, de nem ajánlott
print(obj._MyClass__private) # hozzáférés a "privát" attribútumhoz name mangling segítségével
Így a Pythonban nincs szigorú privát hozzáférés, de vannak konvenciók és mechanizmusok, amelyek lehetővé teszik az adatok elrejtését a közvetlen külső hozzáféréstől.