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