Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Sugestão] refatorando uma função

class Pessoa:
    def __init__(self, nome='', idade=0, trabalho=''):
        self.nome = nome.title()
        self.idade = idade
        self.trabalho = trabalho
    
    def __str__(self):
        return f'{self.nome}, {self.idade} anos, {self.trabalho}'

    @property
    def saudacao(self):
        if self.profissao:
            return f'Ola, sou {self.nome}! Trabalho com {self.trabalho}'
        else:
            return f'Ola, sou {self.nome}!'
    
    def aniversario(self):
        self.idade += 1

pessoa1 = Pessoa(nome='Alice', idade=20, trabalho='Engenheira')
pessoa2 = Pessoa(nome='Maria', idade =45, trabalho='Desenvolvedora')
pessoa3 = Pessoa(nome='Joao', idade='25')

print('Informacoes iniciais:')
print(pessoa1)
print(pessoa2)
print(pessoa3)
print()

print(pessoa1.saudacao)
print(pessoa2.saudacao)
print(pessoa3.saudacao)
1 resposta

Oi, Apollo. Tudo certo?

O seu código para a atividade mostra um excelente domínio dos conceitos de orientação a objetos em Python. A implementação do método especial para representação em string e o método de instância para incrementar a idade ficaram ótimos, demonstrando que você compreendeu bem como manipular os atributos do objeto.

Existe uma inconsistência técnica na sua propriedade de saudação que causará um erro de execução. Você utilizou a condição avaliando um atributo chamado profissão, mas o nome definido no construtor da sua classe foi trabalho, o que gerará uma falha informando que o objeto não possui essa característica. Além disso, ao instanciar o terceiro objeto passando a idade como string entre aspas, o método de aniversário falhará ao tentar somar um número inteiro a um texto.

Para corrigir o fluxo, garanta que o teste condicional verifique a variável correta que armazena a ocupação da pessoa.

Como você imagina que poderíamos fazer uma validação interna no construtor para evitar que tipos incorretos de dados sejam atribuídos à idade?

Parabéns pelo ótimo desenvolvimento no desafio e saiba que o fórum está sempre à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!