1
resposta

[Dúvida] property

Olá! Tudo bem? Poderia me ajudar a entender melhor o "@property", por favor?

1 resposta

Olá João! Tudo bem?

Claro, vou te ajudar a entender o @property no Python. O @property é um decorador que permite que você trate métodos de uma classe como se fossem atributos. Isso é útil quando você quer controlar o acesso a um atributo, por exemplo, para validar ou modificar o valor antes de retornar.

Vamos a um exemplo prático:

Imagine que você tem uma classe Cachorro e quer controlar a idade do cachorro para que ela nunca seja negativa. Você pode usar o @property para isso:

class Cachorro:
    def __init__(self, nome, idade):
        self.nome = nome
        self._idade = idade  # Note o underline, indicando que é "protegido"

    @property
    def idade(self):
        return self._idade

    @idade.setter
    def idade(self, valor):
        if valor >= 0:
            self._idade = valor
        else:
            raise ValueError("A idade não pode ser negativa")

# Uso
meu_cachorro = Cachorro("Rex", 5)
print(meu_cachorro.idade)  # Acessa como um atributo

meu_cachorro.idade = 3  # Modifica usando o setter
print(meu_cachorro.idade)

# meu_cachorro.idade = -1  # Isso lançaria um ValueError

No exemplo acima, @property permite que você acesse idade como se fosse um atributo, mas na verdade está chamando o método idade(). O @idade.setter é usado para definir o comportamento ao tentar modificar idade.

Espero que isso ajude a esclarecer como o @property funciona e como ele pode ser útil para encapsular a lógica de acesso a atributos.

Bons estudos!

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