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!