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útumné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útumné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.