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:

Una Clase, en Programación Orientada a Objetos, puede tener atributos (a veces llamados variables o atributos). Los objetos creados a ...
Las variables de un objeto no siempre deben ser directamente accesibles. Para evitar cambios accidentales, las variables de 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 ...
En Python todo es un objeto. Un objeto tiene cero o más métodos. Hasta ahora ya has trabajado con objetos ...
Los objetos pueden llamar a métodos en python, que son métodos definidos en clases. Los métodos pueden modificar todas las ...
Los métodos estáticos en python no requieren la creación de objetos de una clase para ser llamados, se pueden llamar ...

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

2 comentarios en «Cómo usar la encapsulación en Python»

  1. ¡Los getters y setters en Python son una bendición o una maldición? Opina.

  2. ¡Creo que los getters y setters en Python son clave para la encapsulación! 🔒🐍

Los comentarios están cerrados.