40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Encapsulamiento y métodos especiales
|
||
|
||
Hay un convenio que se utiliza en Python para indicar que un atributo
|
||
o método es privado o protegido. No se debería usar fuera de la clase.
|
||
Atributo protegido
|
||
self._dinero
|
||
|
||
Atributo privado:
|
||
self.__dinero
|
||
|
||
Esto activa un mecanismo de cambio de nombre conocido como ‘name mangling‘,
|
||
donde el intérprete de Python altera internamente el nombre del atributo
|
||
para hacer más difícil su acceso desde fuera de la clase.
|
||
|
||
Para extraerlo hay que poner el nombre de la clase delante del atributo
|
||
self._Ejemplo__dinero
|
||
|
||
"""
|
||
|
||
|
||
class Ejemplo:
|
||
|
||
def __init__(self):
|
||
|
||
# Atributo protegido
|
||
self._atributo_protegido = "Soy un atributo protegido y no deberías poder verme"
|
||
|
||
# Atributo privado
|
||
|
||
self.__atributo_privado = "Soy un atributo privado, inalcanzable desde fuera de la clase"
|
||
|
||
|
||
ejemplo = Ejemplo()
|
||
|
||
print(ejemplo._atributo_protegido) # Acceso al atributo protegido
|
||
print(ejemplo._Ejemplo__atributo_privado) # Acceso al atributo privado
|
||
print(ejemplo.__atributo_privado) # Error
|