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