Olá, Thaís. Como vai?
Parabéns pela resolução da atividade! O seu código ficou excelente, muito bem estruturado e demonstra que você assimilou com perfeição os conceitos de Programação Orientada a Objetos (POO) em Python.
Você aplicou ótimas práticas no seu script, merecendo destaque:
- Argumentos opcionais no construtor: Definir
idade = 0 e profissão = '' como padrões no __init__ torna a criação de objetos mais flexível, como vimos no caso da pessoa2, onde a profissão não precisou ser informada. - O método especial
__str__: Utilizá-lo para mudar a representação textual do objeto é uma excelente prática em Python. Isso deixa o comando print(objeto) limpo e legível. - O decorador
@property: O uso em saudacao foi cirúrgico. Ele permite acessar o método como se fosse um atributo dinâmico (pessoa1.saudacao), sem a necessidade de usar os parênteses (). Além disso, a estrutura condicional dentro dele tratou muito bem o cenário em que a profissão não existe.
Para enriquecer ainda mais o seu aprendizado e trazer algumas boas práticas do ecossistema Python, deixo duas sugestões rápidas que podem deixar seu código ainda mais profissional:
1. Evite acentos nos nomes de variáveis e parâmetros
Embora o Python 3 aceite perfeitamente caracteres do padrão Unicode (como acentos), a convenção internacional da comunidade recomenda utilizar apenas caracteres alfanuméricos simples para nomes de argumentos e variáveis. No seu construtor, você usou profissão = '' com acento no parâmetro, mas definiu o atributo interno como self.profissao = profissão. O ideal para manter o padrão é remover o acento também do argumento:
# Boa prática: manter parâmetros e atributos sem acentuação
def __init__(self, nome, idade = 0, profissao = ''):
self.nome = nome
self.idade = idade
self.profissao = profissao
2. Uso do f-string com propriedades modificadas
No método aniversario(self), você incrementa a idade corretamente com self.idade += 1. Uma modificação sutil e bem bacana para testar o comportamento do @property é criar propriedades calculadas (como se a pessoa é maior de idade ou não). Veja esse exemplo de complemento:
@property
def eh_maior_de_idade(self):
return self.idade >= 18
O seu código cumpre perfeitamente o propósito do desafio e mostra que você está no caminho certo para dominar os recursos avançados de classes no Python.
Continue praticando e compartilhando sua evolução no fórum!
Espero que possa ter lhe ajudado!