Logo de fravelz

Notas de Hacking

Fravelz

Getters y Setters


¿Qué son los getters y setters? {#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 {#ejemplo-básico}

class Persona:
def __init__(self, nombre):
self.__nombre = nombre  # atributo privado

# Getter
def get_nombre(self):
return self.__nombre

# Setter
def set_nombre(self, nuevo_nombre):
if len(nuevo_nombre) > 0:
self.__nombre = nuevo_nombre
else:
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 {#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 {#ejemplo-con-property}

class Persona:
def __init__(self, nombre):
self.__nombre = nombre

@property
def nombre(self):
return self.__nombre

@nombre.setter
def nombre(self, nuevo_nombre):
if len(nuevo_nombre) > 0:
self.__nombre = nuevo_nombre
else:
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 getter
p.nombre = "Andrés"  # ✅ Llama automáticamente al setter

print(p.nombre)   # ✅ Andrés
p.nombre = ""     # ❌ El nombre no puede estar vacío.

Ventajas de usar @property {#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.


En resumen {#en-resumen}