1
resposta

[Dúvida] duvida sobre o @property

estava estudando sobre python e me deparo com o @property e ate agora eu não entendi direito como utilizar essa propriedade, gostaria de entender melhor sobre.

1 resposta

Olá Felipe! Como vai?

O @property em Python é uma maneira elegante de usar métodos como se fossem atributos. Isso é útil quando você quer controlar o acesso a um atributo de uma classe, permitindo que você adicione lógica adicional ao obter ou definir o valor desse atributo, sem mudar a interface da classe.

Vamos a um exemplo prático para esclarecer:

class Circulo:
    def __init__(self, raio):
        self._raio = raio

    @property
    def raio(self):
        return self._raio

    @raio.setter
    def raio(self, valor):
        if valor < 0:
            raise ValueError("O raio não pode ser negativo")
        self._raio = valor

    @property
    def area(self):
        from math import pi
        return pi * (self._raio ** 2)

# Uso
c = Circulo(5)
print(c.raio)  # Acessa o raio usando o getter
c.raio = 10    # Modifica o raio usando o setter
print(c.area)  # Calcula a área automaticamente

Neste exemplo, raio é um atributo "protegido" por um getter e um setter. Isso significa que sempre que você tentar acessar c.raio, o método raio é chamado, e o mesmo acontece quando você tenta definir um novo valor para c.raio. Isso permite adicionar verificações, como a que impede que o raio seja negativo.

Além disso, a propriedade area é calculada dinamicamente com base no valor atual de raio, e não precisa de um setter, pois não faz sentido definir a área diretamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.