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