1
resposta

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

class Pessoa:
    def __init__(self, nome='', idade=0, 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): 
        return f'Olá, sou {self.profissao}(a) e me chamo {self.nome}'

pessoa1 = Pessoa('Enzo', 22, 'engenheiro')
print(pessoa1)
print(pessoa1.saudacao)
pessoa1.aniversario()
print(pessoa1)
Enzo - 22 anos - engenheiro
Olá, sou engenheiro(a) e me chamo Enzo
Enzo - 23 anos - engenheiro
1 resposta

Oi, Carlos! Como vai?

Agradeço por compartilhar.

Gostei bastante da forma como você organizou a classe Pessoa, principalmente o uso de @property pra a saudacao, que deixa o código mais limpo e fácil de usar. Também ficou bem claro o comportamento do método aniversario, mostrando bem a mudança de estado do objeto.

Você pode usar o método @classmethod pra criar instâncias com valores padrão personalizados.


class Pessoa:

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

    @classmethod
    def criar_padrao(cls):
        return cls('anonimo', 0, 'nao definida')

pessoa = Pessoa.criar_padrao()
print(pessoa.nome)

Esse código cria uma pessoa com valores padrão usando um metodo da própria classe, facilitando a reutilização.

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