Variables Clases
Variables protegidas y privadas en clases
Section titled “Variables protegidas y privadas en clases”1. self._variable (un guion bajo)
Section titled “1. self._variable (un guion bajo)”Por convención, el guion bajo simple _ indica que el atributo es “protegido” (protected), o sea:
“No lo uses directamente fuera de la clase, aunque *puedes- hacerlo sí realmente quieres”.Python **no bloquea** su acceso; es solo una **advertencia entre programadores**. ```python class Persona: def __init__(self, nombre): self._nombre = nombre # protegido
p = Persona(“Ana”) print(p._nombre) # 😅 Funciona, pero no deberías accederlo así
---
## 2. self.__variable (doble guion bajo)El **doble guion bajo __** activa el mecanismo de **name mangling** o “ofuscación de nombre”.
Eso significa que Python **cambia internamente el nombre del atributo** para evitar que se sobrescriba o se acceda fácilmente desde fuera de la clase.
Por ejemplo:```pythonclass Persona:def __init__(self, nombre):self.__nombre = nombre # privado (name mangling)
p = Persona("Luis")
print(p.__nombre) # ❌ Error: AttributeErrorPero internamente Python lo guarda así
print(p._Persona__nombre) # ✅ LuisEn otras palabras:
- No lo vuelve totalmente privado, pero dificulta su acceso externo.
- Se usa para evitar colisiones de nombres en clases hijas (herencia) y proteger la integridad interna.