1
resposta

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

A criação de classes em Python é uma maneira poderosa de estruturar código de forma orientada a objetos. Abaixo, temos um exemplo de uma classe chamada Livro que representa informações sobre um livro, como título, autor e número de páginas:

class Livro:
    def __init__(self, titulo='', autor='', paginas=0):
        self.titulo = titulo
        self.autor = autor
        self.paginas = paginas

    def __str__(self):
        return f'{self.titulo} por {self.autor} - {self.paginas} páginas'

    @property
    def titulo_autor(self):
        return f'{self.titulo} por {self.autor}'

    def aumentar_paginas(self, quantidade):
        self.paginas += quantidade

Agora é sua vez! Crie uma nova classe chamada Pessoa com atributos como nome, idade e profissão. Adicione um método especial str para imprimir uma representação em string da pessoa. Implemente também um método de instância chamado aniversario que aumenta a idade da pessoa em um ano. Por fim, adicione uma propriedade chamada saudacao que retorna uma mensagem de saudação personalizada com base na profissão da pessoa.


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} | idade = {self.idade} anos | trabalho = {self.profissao}'

    @property
    def saudacao(self):
        return f'Olá! meu nome é {self.nome}, tenho {self.idade} anos e trabalho como {self.profissao}'
    
    def aniversario(self):
        self.idade += 1
        return self.idade


pessoa1 = Pessoa(nome='Diego', idade= 27, profissao='Dentista')
pessoa2 = Pessoa(nome='João', idade= 35, profissao='Advogado')
pessoa3 = Pessoa(nome='Maria', idade= 31, profissao='Médica')

print(pessoa1)
print(pessoa2)
print(pessoa3)
print()
print("-------")
print(pessoa1.saudacao)
print(pessoa2.saudacao)
print(pessoa3.saudacao)
print()
print("-------")
pessoa1.aniversario()
pessoa2.aniversario()
pessoa3.aniversario()
print('Proximo Aniversário\n')
print(pessoa1)
print(pessoa2)
print(pessoa3)
Diego | idade = 27 anos | trabalho = Dentista
João | idade = 35 anos | trabalho = Advogado
Maria | idade = 31 anos | trabalho = Médica

-------
Olá! meu nome é Diego, tenho 27 anos e trabalho como Dentista
Olá! meu nome é João, tenho 35 anos e trabalho como Advogado
Olá! meu nome é Maria, tenho 31 anos e trabalho como Médica

-------
Proximo Aniversário

Diego | idade = 28 anos | trabalho = Dentista
João | idade = 36 anos | trabalho = Advogado
Maria | idade = 32 anos | trabalho = Médica
1 resposta

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei bastante de como você estruturou a classe Pessoa, principalmente o uso de @property para criar a saudacao, deixando o código mais elegante e fácil de usar. Também ficou claro o funcionamento do método aniversario, que altera o estado do objeto de forma simples e direta.

Uma dica interessante para o futuro é usar o método especial __repr__ para ajudar na depuração dos objetos. Veja este exemplo:


class Pessoa:
    def __repr__(self):
        return f"Pessoa(nome='{self.nome}', idade={self.idade}, profissao='{self.profissao}')"

Esse código define uma representação mais técnica do objeto, útil para testes e debug, mostrando exatamente os valores internos.

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