1
resposta

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

import datetime

class Pessoa:

lista_de_pessoas = []

def __init__(self, nome: str, idade: int, profissao: str):

    if not isinstance(nome, str) or not nome:
        raise ValueError('O nome deve ser uma string, não vazia.')
    if not isinstance(idade, int) or not idade:
        raise ValueError('A idade deve ser um número, inteiro positivo')
    if not isinstance(profissao, str) or not profissao:
        raise ValueError('A sua profissão deve ser um valor string, não vazio')

    self.nome = nome
    self.idade = idade
    self.profissao = profissao
    Pessoa.lista_de_pessoas.append(self)

def __str__(self):
    return f'{self.nome:<15} | {str(self.idade):<5} | {self.profissao}'

@staticmethod
def listar_pessoas():
    print(f'     {"Nome":<15} | {"idade":<5} | {"profissao":<15}')
    for indice, pessoa in enumerate(Pessoa.lista_de_pessoas):
        print(f'{indice:<4} {pessoa}')

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

@property
def saudacao(self):
    return f'Bem vindo {self.profissao}.'

pessoa1 = Pessoa('Paulo', 40, 'Analista de TI') pessoa2 = Pessoa('Jesus', 33, 'Evangelizador') pessoa3 = Pessoa('Sakura', 25, 'Amazona')

pessoa1.aniversario()

print(pessoa1.saudacao)

Pessoa.listar_pessoas()

1 resposta

Oi, Marcos!

Gostei bastante da forma como você encapsulou os dados com validações no __init__ e usou o método @staticmethod pra listar os objetos criados. Isso mostra um bom entendimento sobre orientação a objetos.

Continue firme nos estudos.

Alura

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