1
resposta

Mão na massa: refatorando uma função

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

    def __str__(self):
        return f'Nome:{self.nome}\nIdade: {self.idade}\nProfissão:{self.profissao} '
    
    @classmethod
    def aniversario(cls, incremento):
        incremento.idade += 1

    @property
    def saudacao(self):
        return f'{self.nome} seja bem vindo a profissão de {self.profissao}!'
        
pessoa_1 = Pessoa('Michael', 25, 'Bombeiro')
Pessoa.aniversario(pessoa_1)
print(pessoa_1)
print(pessoa_1.saudacao)
1 resposta

Boa noite Felipe! Tudo bem com você?

Obrigado por compartilhar seu código. Ao testar seu código, tive o erro TypeError: can only concatenate str (not "int") to str e isso está ocorrendo devido a ordem que você está passando os parâmetros da instância da classe. Deixo a seguir os ajustes que precisaremos fazer:

  • No seu código, você está criando a instância pessoa_1 com os parâmetros na ordem errada. A ordem correta, conforme o método __init__, é nome, profissao, idade.
  • Você implementou o método aniversario como um método de classe (@classmethod), mas ele deveria ser um método de instância. Isso significa que ele deve operar sobre a instância específica de Pessoa, e não sobre a classe em si.

Deixo a seguir o código completo com os ajustes:

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

    def __str__(self):
        return f'Nome: {self.nome}\nIdade: {self.idade}\nProfissão: {self.profissao}'

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

    @property
    def saudacao(self):
        return f'{self.nome} seja bem-vindo(a) à profissão de {self.profissao}!'

pessoa_1 = Pessoa('Michael', 'Bombeiro', 25)
pessoa_1.aniversario()
print(pessoa_1)
print(pessoa_1.saudacao)

Como resultado, teremos:

Nome: Michael
Idade: 26
Profissão: Bombeiro
Michael seja bem-vindo(a) à profissão de Bombeiro!

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

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