Menu
Coddy logo textTech

Decorador de Propriedade

Parte da seção Object Oriented Programming do Journey de Python da Coddy — lição 10 de 64.

O decorador @property permite que você acesse métodos como atributos, fornecendo uma maneira limpa de obter e definir valores. Isso é útil para encapsulamento, permitindo adicionar lógica de validação ou valores calculados sem alterar a interface pública da sua classe.

Aqui está um exemplo de uma classe usando @property:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @property
    def area(self):
        return 3.14159 * self._radius ** 2

Note que usamos self._radius para armazenar o valor real. Se usássemos self.radius dentro do getter, isso chamaria o método getter novamente, levando a uma recursão infinita.

Crie um círculo e acesse as propriedades:

my_circle = Circle(5)

Acesse propriedades como atributos regulares:

print(my_circle.radius)
print(my_circle.area)

Saída:

5
78.53975

Observe que você não usa parênteses () ao acessar propriedades - elas se parecem com atributos, mas executam o código do método.

Adicione um setter para permitir a alteração de valores com validação:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @radius.setter
    def radius(self, value):
        if value > 0:
            self._radius = value
        else:
            print("Radius must be positive!")

Agora você pode definir o raio como um atributo:

my_circle = Circle(5)
my_circle.radius = 10  # Uses the setter
print(my_circle.radius)  # Uses the getter

Saída:

10

Ponto Chave: @property faz com que métodos pareçam atributos, enquanto @property_name.setter permite que você controle como os valores são atribuídos, permitindo validação de dados e encapsulamento.

Experimente você mesmo

Esta lição não inclui um desafio de código.

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