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.
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.
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!