0
respostas

[Dúvida] Funcionalidade @property e @classmethod em classes

Vi nas aulas que existe a possibilidade de transformar um método de classe em uma propriedade que pode ser um atributo acessível com o @property.

Mas ainda não compreendi com clareza o que isto faz. Gostaria de uma explicação um pouco diferente disso e entender quais os benefícios de utilizar esta funcionalidade na prática para outras aplicações.

Se possível, gostaria que fizesse um paralelo com o @classmethod também, para entender quando seria necessário utilizar.

Abaixo, estrutura do último código que executei com esta função também.

class Pessoa:
    def __init__(self, nome='', idade=0, profissao=''):
        self.nome = nome.title()
        self.idade = idade
        self.profissao = profissao
        
    def __str__(self):
        return f'{self.nome} com idade de {self.idade} anos e profissão {self.profissao}.'
    
    def aniversario(self):
        self.idade += 1
        print(f'Feliz aniversário {self.nome}! Completou {self.idade} aninhos!')

    @property
    def saudacao(self):
        return f'Saudações, {self.nome}! Adoramos ter um(a) {self.profissao} conosco!'