Menu
Coddy logo textTech

Decoradores de propiedades

Parte de la sección Object Oriented Programming del Journey de Python de Coddy. Lección 14 de 64.

Los decoradores de propiedades te permiten controlar cómo se accede a los atributos y cómo se modifican, manteniendo al mismo tiempo la sintaxis simple de los atributos.

Aquí hay un ejemplo de una clase con un getter de propiedad:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age

Usa la propiedad como un atributo normal:

person = Person("Alice", 30)
print(person.age)

Resultado:

30

Observa que accedes a age sin paréntesis, aunque en realidad está llamando a un método.

Añade un setter para validar los datos al establecer valores:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age
    
    @age.setter
    def age(self, value):
        if value < 0:
            raise ValueError("Age cannot be negative")
        self._age = value

Ahora puedes establecer la edad con validación automática:

person = Person("Alice", 30)
person.age = 31     # Usa el setter con validación
print(person.age)   # Usa el getter

# Esto lanzaría un error:
# person.age = -5   # ValueError: La edad no puede ser negativa

Salida:

31

Crea propiedades computadas que calculen valores:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    @property
    def area(self):
        return self.width * self.height

rect = Rectangle(5, 3)
print(rect.area)  # Calcula 5 * 3 = 15

Resultado:

15

Punto clave: Los decoradores de propiedades hacen que los métodos parezcan atributos. Usa @property para los getters y @attribute_name.setter para los setters. Esto permite la validación de datos y valores calculados mientras se mantiene una sintaxis simple de acceso a atributos.

challenge icon

Desafío

Intermedio

Completa la clase Temperature en temperature.py que convierte entre Celsius y Fahrenheit. Luego, utiliza esta clase en driver.py para probar las conversiones de temperatura. Sigue los comentarios TODO en ambos archivos para obtener instrucciones paso a paso.

Pruébalo tú mismo

# TODO: Importar la clase Temperature del módulo temperature

# Probar la clase:
# TODO: Crear una instancia de temperatura a 25°C
temp = None  # Reemplazar con la instancia real de Temperature

# TODO: Imprimir los valores tanto en Celsius como en Fahrenheit
# TODO: Usar el formato: "25.0°C is 77.0°F"

# TODO: Establecer la temperatura a 98.6°F

# TODO: Imprimir ambos valores de nuevo para confirmar que la conversión funciona
# TODO: Usar el mismo formato que antes
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Object Oriented Programming

Practica por tu cuenta: Compilador de Python online