Getter Setter
Getters y Setters
Section titled “Getters y Setters”¿Qué son los getters y setters?
Section titled “¿Qué son los getters y setters?”- Getter: método que obtiene (lee) el valor de un atributo.
- Setter: método que establece (modifica) el valor de un atributo.
Se usan para controlar el acceso a los atributos de una clase, especialmente cuando son “protegidos” o “privados”.
Ejemplo básico
Section titled “Ejemplo básico”class Persona:def __init__(self, nombre):self.__nombre = nombre # atributo privado
# Getterdef get_nombre(self):return self.__nombre
# Setterdef set_nombre(self, nuevo_nombre):if len(nuevo_nombre) > 0:self.__nombre = nuevo_nombreelse:print("❌ El nombre no puede estar vacío.")Uso:
p = Persona("Ana")print(p.get_nombre()) # ✅ Ana
p.set_nombre("Luis")print(p.get_nombre()) # ✅ Luis
p.set_nombre("") # ❌ El nombre no puede estar vacío.Pero Python tiene una forma más elegante → @property
Section titled “Pero Python tiene una forma más elegante → @property”Python permite crear getters y setters de manera más limpia y natural usando decoradores.
Ejemplo con @property
Section titled “Ejemplo con @property”class Persona:def __init__(self, nombre):self.__nombre = nombre
@propertydef nombre(self):return self.__nombre
@nombre.setterdef nombre(self, nuevo_nombre):if len(nuevo_nombre) > 0:self.__nombre = nuevo_nombreelse:print("❌ El nombre no puede estar vacío.")Ahora se usa como sí fuera un atributo normal:
p = Persona("Carlos")
print(p.nombre) # ✅ Llama automáticamente al getterp.nombre = "Andrés" # ✅ Llama automáticamente al setter
print(p.nombre) # ✅ Andrésp.nombre = "" # ❌ El nombre no puede estar vacío.Ventajas de usar @property
Section titled “Ventajas de usar @property”✅ No cambias la forma de usar los atributos. ✅ Puedes añadir validaciones sin romper el código existente. ✅ Encapsulas correctamente los datos. ✅ Evitas accesos o cambios indebidos.