Menu
Coddy logo textTech

Decoradores de Propriedade

Parte da seção Object Oriented Programming do Journey de Python da Coddy. Lição 14 de 64.

Decoradores de propriedade permitem que você controle como os atributos são acessados e modificados, mantendo a sintaxe simples de atributo.

Aqui está um exemplo de uma classe com um getter de propriedade:

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

Use a propriedade como um atributo comum:

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

Saída:

30

Observe que você acessa age sem parênteses, embora esteja, na verdade, chamando um método.

Adicione um setter para validar os dados ao definir 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

Agora você pode definir a idade com validação automática:

person = Person("Alice", 30)
person.age = 31     # Usa o setter com validação
print(person.age)   # Usa o getter

# Isso geraria um erro:
# person.age = -5   # ValueError: A idade não pode ser negativa

Saída:

31

Crie propriedades computadas que calculam 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

Saída:

15

Ponto Chave: Decoradores de propriedade fazem com que métodos pareçam atributos. Use @property para getters e @attribute_name.setter para setters. Isso permite a validação de dados e valores computados, mantendo uma sintaxe simples de acesso a atributos.

challenge icon

Desafio

Médio

Complete a classe Temperature em temperature.py que converte entre Celsius e Fahrenheit. Em seguida, use esta classe em driver.py para testar conversões de temperatura. Siga os comentários TODO em ambos os arquivos para instruções passo a passo.

Experimente você mesmo

# TODO: Importar a classe Temperature do módulo temperature

# Testar a classe:
# TODO: Criar uma instância de temperatura a 25°C
temp = None  # Substituir pela instância real de Temperature

# TODO: Imprimir os valores em Celsius e Fahrenheit
# TODO: Usar o formato: "25.0°C is 77.0°F"

# TODO: Definir a temperatura para 98.6°F

# TODO: Imprimir ambos os valores novamente para confirmar que a conversão funciona
# TODO: Usar o mesmo formato de antes
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Object Oriented Programming

Pratique por conta própria: Compilador de Python online