1
resposta

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

class Pessoa:
    def __init__(self, nome: str, idade: int, profissao: str) -> None:
        self._nome: str = nome
        self._idade: int = idade
        self._profissao: str = profissao

    @property
    def nome(self) -> str:
        return self._nome
    
    @property
    def idade(self) -> int:
        return self._idade
    
    @property
    def profissao(self) -> str:
        return self._profissao
    
    def __str__(self) -> str:
        return(f"{self._nome} | {self._idade} | {self._profissao}")
    
    def listar_dados(self) -> None:
        print(self)

    def aniversario(self) -> None:
        self._idade += 1

    def saudacao(self) -> str:
        return(f"Olá {self._nome}, sua profissão registrada em nossos arquivos é '{self._profissao}'")
    
pessoa1 = Pessoa("Rafaela", 19, "Estudante")
pessoa2 = Pessoa("Carlos", 19, "Estagiário")
pessoa1.aniversario()
print(pessoa1.saudacao())
pessoa1.listar_dados()
1 resposta

Olá, Rafaela! Como vai?

Parabéns pela resolução da atividade!

Observei que sua resposta explorou o uso de propriedades para proteger os atributos da classe, utilizou muito bem o método __str__ para exibir os dados de forma organizada e ainda compreendeu a importância de criar funções como aniversario e saudacao para enriquecer o comportamento dos objetos.

Uma dica interessante para o futuro é implementar um método que permita atualizar a profissão de forma controlada. Assim:

class Pessoa:
    # ... demais métodos

    def atualizar_profissao(self, nova_profissao: str) -> None:
        self._profissao = nova_profissao
        print(f"A profissão de {self._nome} foi atualizada para '{self._profissao}'")

Isso faz com que o código seja mais flexível e permita mudanças nos dados sem precisar acessar diretamente os atributos.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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