🔒 Encapsulamiento en Python

Protege y controla el acceso a los datos de tus objetos para una programación más robusta y segura.

🔒 ¿Qué es el Encapsulamiento?

El encapsulamiento es uno de los pilares de la Programación Orientada a Objetos. Consiste en ocultar los detalles internos de un objeto y exponer solo lo necesario. Así, protegemos los datos y evitamos que sean modificados accidentalmente desde fuera de la clase.

🌟 Beneficios del Encapsulamiento

  • Protege los datos internos del objeto
  • Permite controlar cómo se accede y modifica la información
  • Facilita el mantenimiento y la evolución del código
  • Evita errores y comportamientos inesperados

🔑 Atributos Públicos, Protegidos y Privados

En Python, el acceso a los atributos se controla por convención usando guiones bajos:

class Persona:
    def __init__(self, nombre, edad, dni):
        self.nombre = nombre              # Público
        self._edad = edad                # Protegido
        self.__dni = dni                 # Privado

persona = Persona("Ana", 25, "12345678A")
# Acceso público
print(persona.nombre)
# Acceso protegido (no recomendado fuera de la clase)
print(persona._edad)
# Acceso privado (falla): print(persona.__dni)
# Acceso privado correcto:
print(persona._Persona__dni)

🛡️ Getters y Setters

Para acceder o modificar atributos privados, se usan métodos especiales llamados getters y setters. En Python, se recomienda usar la función @property para una sintaxis más elegante.

class CuentaBancaria:
    def __init__(self, saldo):
        self.__saldo = saldo

    @property
    def saldo(self):
        return self.__saldo

    @saldo.setter
    def saldo(self, valor):
        if valor >= 0:
            self.__saldo = valor
        else:
            print("El saldo no puede ser negativo")

cuenta = CuentaBancaria(1000)
print(cuenta.saldo)
cuenta.saldo = 500
print(cuenta.saldo)
cuenta.saldo = -100  # Muestra error

✅ Buenas Prácticas y Ventajas

🤖 Uso de IA para Detectar Errores de Encapsulamiento

Las herramientas de IA pueden analizar tu código y sugerir mejoras en el uso de atributos privados, getters y setters, y detectar accesos indebidos a datos protegidos.

🌟 Ejemplo de Prompt para IA

  • "Analiza mi clase y sugiere mejoras de encapsulamiento y control de acceso."
  • "¿Hay atributos que deberían ser privados?"
  • "¿Estoy usando correctamente @property y los setters?"

💪 Ejercicio Práctico

Crea una clase Producto con los siguientes atributos:

Implementa getters y setters para el precio, validando que nunca sea negativo. Crea un método para mostrar la información del producto.

🚀¿Listo para Continuar?

¡Excelente! Ahora dominas el encapsulamiento en Python.
En la siguiente sección aprenderás sobre constructores y cómo inicializar objetos de manera flexible.

🏗️Continuar con Constructores →