Olá, Everton! Tudo bem?
No seu código, a função saudacao
é um método de classe (@classmethod
), o que permite que você a chame diretamente pela classe usando Pessoa.saudacao()
. Já o msg_personalizada
está definido como uma propriedade (@property
), acessada por instâncias da classe, como pessoa1.msg_personalizada
.
Para chamar msg_personalizada
diretamente pela classe, você pode:
Transformar msg_personalizada
em um método de classe:
Se você quer que msg_personalizada
funcione da mesma forma que saudacao
, ou seja, chamável pela classe (Pessoa.msg_personalizada()
), use o decorador @classmethod
:
@classmethod
def msg_personalizada(cls):
for pessoa in cls.pessoas:
print(f'\nO(a) candidato(a) {pessoa._nome} tem a vaga para {pessoa._profissao} em nosso escritório.')
Uso:
Pessoa.msg_personalizada()
Manter como propriedade, mas usar na instância:
Se quiser manter msg_personalizada
como uma propriedade, o acesso deve continuar sendo feito pela instância, sem parênteses:
pessoa1.msg_personalizada
Diferença entre as abordagens:
@classmethod
: Pode ser chamado diretamente pela classe ou instância e geralmente manipula atributos de classe (como a lista pessoas
).@property
: Acessa informações específicas de uma instância, simulando o acesso a um atributo.
No seu caso, como msg_personalizada
lida com todas as pessoas (atributo da classe), o mais apropriado é usar o @classmethod
.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.