📃 README 📚 Material didáctico 📝 Ejercicios
Esta técnica consiste en bloquear el acceso a atributos y métodos internos de la clase al acceder desde el exterior.
Podemos simularlo (Ya que en Python NO EXISTE) de esta forma:
##Bloqueando ATRIBUTOS:
class Ejemplo:
__atributo_privado = "Soy un atributo inalcanzable desde fuera."
e = Ejemplo()
print(e.__atributo_privado)
AttributeError Traceback (most recent call last) in () ----> 1 print(e.__atributo_privado)
AttributeError: 'Ejemplo' object has no attribute '__atributo_privado'
##Bloqueando METODOS:
class Ejemplo:
def __metodo_privado(self):
print("Soy un método inalcanzable desde fuera.")
e = Ejemplo()
e.__metodo_privado()
AttributeError Traceback (most recent call last) in () ----> 1 e.__metodo_privado()
AttributeError: 'Ejemplo' object has no attribute '__metodo_privado'
Sea como sea para acceder a esos datos se deberían crear métodos públicos que hagan de interfaz. En otros lenguajes les llamaríamos getters y setters y es lo que da lugar a las propiedades, que no son más que atributos protegidos con interfaces de acceso:
class Ejemplo:
__atributo_privado = "Soy un atributo inalcanzable desde fuera."
def __metodo_privado(self):
print("Soy un método inalcanzable desde fuera.")
def atributo_publico(self):
return self.__atributo_privado
def metodo_publico(self):
return self.__metodo_privado()
e = Ejemplo()
print(e.atributo_publico())
e.metodo_publico()
Soy un atributo inalcanzable desde fuera.
Soy un método inalcanzable desde fuera.