python-como-usar-propiedades

Cómo usar propiedades en Python

Python proporciona una forma más elegante y concisa de definir getters y setters utilizando la función property.

Esta función permite definir una propiedad que se usa como un atributo, pero con la capacidad de controlar su acceso y modificación.

Las propiedades hacen que el acceso a los atributos parezca más natural, y su sintaxis es más limpia y fácil de entender.

Definición de Propiedades

Se utiliza la palabra reservada property para definir una propiedad. Se puede pasar opcionalmente un getter, un setter y un deleter a esta función.

class Persona:
    def __init__(self, nombre, edad):
        self._nombre = nombre
        self._edad = edad

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

    @nombre.setter
    def nombre(self, nombre):
        if isinstance(nombre, str):
            self._nombre = nombre
        else:
            raise ValueError("El nombre debe ser una cadena de texto")
    
    @property
    def edad(self):
        return self._edad

    @edad.setter
    def edad(self, edad):
        if isinstance(edad, int) and edad > 0:
            self._edad = edad
        else:
            raise ValueError("La edad debe ser un número entero positivo")

Uso de Propiedades

Con las propiedades definidas, se pueden obtener y establecer valores utilizando la sintaxis de atributos, lo que hace el código más limpio y legible.

persona = Persona("Juan", 25)
print(persona.nombre)  # Salida: Juan
persona.nombre = "Carlos"
print(persona.nombre)  # Salida: Carlos

print(persona.edad)  # Salida: 25
persona.edad = 30
print(persona.edad)  # Salida: 30

Fijaos que no tengo que invocar a un método setter o getter. Simplemente obtengo el valor con ., y lo escribo con =, igual que si fuera un atributo.