To tentando entender para que serve o @property mas até o momento não consegui, procurei no gemini e ele me disse que deixa a função inteligente, mas como assim?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
To tentando entender para que serve o @property mas até o momento não consegui, procurei no gemini e ele me disse que deixa a função inteligente, mas como assim?
Oi Rodrigo! Como vai?
O @property em Python é um decorador que transforma um método de uma classe em um atributo "inteligente". Isso significa que você pode acessar o método como se fosse um atributo, mas ainda ter a lógica de um método por trás. Isso é especialmente útil quando você quer controlar o acesso a um atributo ou executar alguma lógica ao acessá-lo.
Por exemplo, imagine que você tem uma classe Livro e quer ter um atributo chamado titulo_formatado, que sempre retorna o título do livro em letras maiúsculas. Você poderia fazer isso com o @property assim:
class Livro:
def __init__(self, titulo, autor, ano_publicacao):
self.titulo = titulo
self.autor = autor
self.ano_publicacao = ano_publicacao
@property
def titulo_formatado(self):
return self.titulo.upper()
Com isso, você pode acessar titulo_formatado como se fosse um atributo, mas ele sempre retornará o título em maiúsculas:
livro = Livro("O Senhor dos Anéis", "J.R.R. Tolkien", 1954)
print(livro.titulo_formatado) # Saída: O SENHOR DOS ANÉIS
A vantagem é que você pode encapsular a lógica de formatação ou validação dentro do método, mas ainda manter uma interface limpa e fácil de usar para quem está utilizando a classe.
Espero ter ajudado e bons estudos!