Sobes.tech
Junior — Middle

Hogyan valósul meg az inkapszuláció elve a Python nyelvben?

sobes.tech MI

Válasz az MI-től

Pythonban az enkapszuláció névkonvenciók és speciális mechanizmusok segítségével valósul meg, mivel a nyelv nem rendelkezik szigorú magánszférával, mint néhány más nyelvben.

  • Nyilvános attribútumok és metódusok — név aláhúzás nélkül, mindenhol elérhetőek.
  • Védett (protected) attribútumok_attribútum névvel, jelezve, hogy az elem belső használatra szánt, de technikailag kívülről is elérhető.
  • Privát (private) attribútumok__attribútum névvel, ami a név mangling-et eredményezi, megnehezítve a hozzáférést kívülről.

Példa:

class MyClass:
    def __init__(self):
        self.public = "mindenki számára elérhető"
        self._protected = "nem ajánlott a használata kívülről"
        self.__private = "külső hozzáférés elől elrejtve"

obj = MyClass()
print(obj.public)        # működik
print(obj._protected)    # működik, de nem ajánlott
# print(obj.__private)   # hibát okoz
print(obj._MyClass__private)  # név mangling-en keresztül elérhető

Így az inkapszuláció Pythonban inkább egy megállapodás és a mangling mechanizmusok használata, mint szigorú korlátozások.