2
respostas

Dúvida sobre o exercício

Percebi que se colocar o método aniversario antes do método saudacao, só dá pra chama-lo se remover os parênteses ou coloca-lo dentro de um print(). Seria por causa da versão do Python que estou usando?

2 respostas

Consegui resolver o exercício, mas fiquei com essa dúvida.

Olá, Claudio! Tudo bem?

A questão que você levantou sobre a ordem dos métodos aniversario e saudacao na sua classe Pessoa e a necessidade de usar parênteses ou colocá-los num print() não está diretamente relacionada à versão do Python que você está usando. Vamos esclarecer isso com um exemplo prático.

No Python, quando você define um método em uma classe, como o aniversario que você mencionou, ele precisa ser chamado com parênteses para ser executado, como pessoa.aniversario(). Isso efetivamente aumenta a idade da pessoa em um ano.

Por outro lado, a propriedade saudacao que você mencionou deve ser definida usando o decorador @property, o que significa que ela pode ser acessada como um atributo sem parênteses, por exemplo, pessoa.saudacao.

Se você tentar chamar pessoa.saudacao() com parênteses, receberá um erro porque saudacao é uma propriedade e não um método. Da mesma forma, se tentar acessar pessoa.aniversario sem parênteses, não verá nenhum efeito porque é um método que precisa ser chamado com parênteses para executar sua função.

Espero que isso esclareça suas dúvidas e bons estudos!

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