1
resposta

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

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


class Person:
    """
    Defines a new person with name (str), age (int) and profession (str).”.
    """

    def __init__(self, name: str = "", age: int = 0, profession: str = ""):
        self.name = name
        self.age = age
        self.profession = profession

    def __str__(self):
        return f"Name: {self.name:<15} | Age: {self.age:<5} | Profession: {self.profession:<20}"

    def birthday(self):
        self.age += 1

    @property
    def greeting(self):
        if self.profession:
            return f"Hello, my name is {self.name}, I work as a {self.profession}. Nice to meet you!"
        return f"Hello, my name is {self.name}, it's a pleasure to meet you."


def linha():
    return "=-" * 30


maria = Person("Maria Santana", 36, "Doctor")
lucas = Person("Lucas Moura", 15)
geovana = Person("Geovana Mata", 33, "Detective")


# __str__ method
print("Implementing __str__ method")
print()
print(maria)
print(lucas)
print(geovana)
print(linha())

# changing Maria's profession, property updates automatically
print()
print(maria.greeting)
maria.profession = "Hospital Manager"
print(
    f"\nUpdating [{maria.name}] profession, and the greeting @property updates automatically:\n"
)
print(maria.greeting)
print(linha())

# Updating Ages
lucas.birthday()
geovana.birthday()
print()
print("Implementing __str__ method, after Birthday\n")
print(maria)
print(lucas)
print(geovana)
print(linha())

# Personalized Greetings
print()
print("Personalized Greetings\n")
print(maria.greeting)
print(lucas.greeting)
print(geovana.greeting)
print(linha())
1 resposta

Tudo bem, Thaís?

Seu código ficou bem estruturado, gostei de como utilizou @property para atualizar a saudação automaticamente. Também achei legal o uso do método __str__ para exibir as informações completas do objeto de forma legível.

Uma dica é usar title() para formatar nomes com iniciais maiúsculas. Veja este exemplo:


nome = "maria santana"
print(nome.title())  # Maria Santana

O title() ajusta o texto deixando a primeira letra de cada palavra maiúscula, melhorando a apresentação.

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