1
resposta

[Dúvida] Erro 'NoneType' com resposta diferente da resolução proposta

Tentei escrever o código da saudação de uma forma diferente, mudando o vocativo da frase caso a pessoa seja um médico. Eu escrevi o código de duas formas diferentes:

def saudacao(self):
        if self.profissao == 'Médico':
            return f'Olá, Dr. {self.nome}'
        else:
            return f'Olá, {self.profissao} {self.nome}'
            
print(pessoa1.saudacao())
def saudacao(self):
        if self.profissao == 'Médico':
            print(f'Olá, Dr. {self.nome}')
        else:
           print(f'Olá, {self.profissao} {self.nome}')
            
pessoa1.saudacao()

Tanto da primeira forma, quanto da segunda colocando o print dentro do if, acabei esbarrando no erro 'NoneType'. Gostaria de saber o que eu poderia fazer de diferente para o código funcionar com essa ideia que eu tive.

1 resposta

Olá, David! Tudo bem?

O erro NoneType ocorre porque, na segunda versão do seu código, o método saudacao não está retornando nada, apenas imprimindo a saudação. Quando você tenta usar o valor retornado pelo método, ele é None, resultando no erro.

Vamos ajustar o código para que ele funcione corretamente. Vou te mostrar como você pode implementar a classe Pessoa com o método saudacao e a propriedade saudacao conforme solicitado na atividade.

class Pessoa:
    def __init__(self, nome, idade, profissao):
        self.nome = nome
        self.idade = idade
        self.profissao = profissao

    def __str__(self):
        return f'{self.nome}, {self.idade} anos, {self.profissao}'

    def aniversario(self):
        self.idade += 1

    @property
    def saudacao(self):
        if self.profissao == 'Médico':
            return f'Olá, Dr. {self.nome}'
        else:
            return f'Olá, {self.profissao} {self.nome}'

# Exemplo de uso:
pessoa1 = Pessoa('João', 30, 'Médico')
print(pessoa1.saudacao)  # Saída: Olá, Dr. João

pessoa2 = Pessoa('Maria', 25, 'Engenheira')
print(pessoa2.saudacao)  # Saída: Olá, Engenheira Maria

Aqui está o que foi feito:

  1. Criei a classe Pessoa com os atributos nome, idade e profissao.
  2. Adicionei o método especial __str__ para representar a pessoa como uma string.
  3. Implementei o método aniversario que aumenta a idade da pessoa em um ano.
  4. Adicionei a propriedade saudacao que retorna a saudação personalizada.

Dessa forma, você pode chamar pessoa1.saudacao diretamente e obter a saudação correta sem esbarrar no erro NoneType.

Espero ter ajudado e bons estudos!

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