Encapsular es esconder los detalles internos de un objeto y dejar que el resto del programa lo use solo a través de sus métodos, que hacen cumplir las reglas.
Piensa en un cajero automático: no metes la mano en la caja del dinero; usas los botones (los métodos). El cajero revisa tu saldo antes de entregarte billetes. Si cualquiera pudiera tocar el saldo directamente, alguien podría ponerse un millón.
Sin y con encapsulamiento
| Sin encapsular | Con encapsulamiento |
|---|---|
cuenta.saldo = -500 (nadie lo impide) |
cuenta.retirar(500) revisa que alcance |
| Cualquier parte del código cambia los datos | Solo la clase decide cómo cambian |
| Un error puede aparecer lejos de su causa | La validación está en un solo lugar |
En Python
Python no prohíbe el acceso; usa convenciones:
| Nombre | Significado |
|---|---|
saldo |
Público: úsalo libremente |
_saldo |
Interno: «no lo toques desde fuera» |
__saldo |
Python le cambia el nombre (name mangling) para dificultar el acceso accidental |