Cómo usar la encapsulación en Python

Las variables de un objeto no siempre deben ser directamente accesibles.

Para evitar cambios accidentales, las variables de un objeto a veces solo se pueden cambiar con los métodos de un objeto. Ese tipo de variables son variables privadas.

Los métodos pueden garantizar que se establezcan los valores correctos. Si se establece un valor incorrecto, el método puede devolver un error.

Ejemplo de encapsulación en python

Python no tiene la palabra clave private, a diferencia de otros lenguajes orientados a objetos, pero se puede encapsular.

En cambio, se basa en la convención: una variable de clase a la que no se debe acceder directamente debe tener un prefijo con un guión bajo.

class Robot(object):
   def __init__(self):
      self.a = 123
      self._b = 123
      self.__c = 123

obj = Robot()
print(obj.a)
print(obj._b)
print(obj.__c)

Si ejecutas el programa, verás:

123
123
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    print(obj.__c)
AttributeError: 'Robot' object has no attribute '__c'

Entonces, ¿qué pasa con los guiones bajos y el error?

Un solo guión bajo: variable privada, no se debe acceder directamente. Pero nada te impide hacer eso (excepto la convención).

Un guión bajo doble: variable privada, más difícil de acceder pero aún posible.

Ambos siguen siendo accesibles: Python tiene variables privadas por convención.

Getters y setters en python

Las variables privadas están destinadas a cambiarse utilizando métodos getter y setter. Estos proporcionan acceso indirecto a ellos:

class Robot(object):
   def __init__(self):
      self.__version = 22

   def getVersion(self):
      print(self.__version)

   def setVersion(self, version):
      self.__version = version

obj = Robot()
obj.getVersion()
obj.setVersion(23)
obj.getVersion()
print(obj.__version)

Esto luego genera los valores de las variables:

La clase con atributo privado y métodos.

Los valores se cambian dentro de los métodos de clase. Puede realizar comprobaciones adicionales, como si el valor no es negativo o demasiado grande.

Si eres un principiante de Python, te recomiendo este libro.

También te puede interesar estos artículos sobre programacion orientada a objetos en python:

Los destructores se llaman cuando un objeto se destruye. Es el polo opuesto del constructor, que se invoca en la ...
Los métodos estáticos en python no requieren la creación de objetos de una clase para ser llamados, se pueden llamar ...
En Python todo es un objeto. Un objeto tiene cero o más métodos. Hasta ahora ya has trabajado con objetos ...
La recolección de basura es un término utilizado en la programación orientada a objetos no es exclusivo de python. Cuando ...
Los objetos se pueden serializar: almacenar en un formato para su uso posterior. Una vez que se serializa un objeto, ...
Un constructor en python es el primer método que se llama en la creación de objetos (un concepto de Programación ...

¿ Te pareció de utilidad este articulo Cómo usar la encapsulación en Python?
⬇️ Me ayudarías mucho si compartes esta entrada.⬇️