Alternativa E - property; idade; setter
Análise do Conceito
A questão aborda o uso de Properties (propriedades) em Python, um recurso que permite gerenciar o acesso a atributos de classe de forma elegante, substituindo métodos diretos de "get" e "set".
No código apresentado, o objetivo é transformar o método idade em uma propriedade gerenciada. Para isso, utilizam-se decorators específicos:
@property: Transforma um método em um getter. Ele permite acessar o atributo como se fosse uma variável simples (objeto.idade), em vez de chamar um método (objeto.idade()).@nome.setter: Permite definir o comportamento quando um novo valor é atribuído à propriedade.
Sintaxe Correta
Para implementar essa lógica corretamente no código da classe Aluno, a estrutura deve ser:
class Aluno:
def __init__(self):
self._idade = None # Atributo protegido
# 1. Uso do decorator @property para o GETTER
@property
def idade(self):
return self._idade
# 2. Uso do decorator @nome.setter para o SETTER
# Onde 'idade' refere-se ao nome da propriedade criada acima
@idade.setter
def idade(self, valor):
if valor < 0:
raise ValueError("A idade não pode ser negativa.")
self._idade = valor
Comparação das Alternativas
| Alternativa | Avaliação | Motivo |
|---|
| A | ❌ Incorreta | classmethod cria métodos ligados à classe, não a instâncias específicas. |
| B | ❌ Incorreta | staticmethod cria métodos estáticos que não acessam self ou cls. |
| C | ❌ Incorreta | Não existe decorator @value para setters em Python. |
| D | ❌ Incorreta | O segundo decorator deve referenciar a propriedade (@idade.setter), não apenas repetir @property. |
| E | ✅ Correta | Segue a sintaxe exata: @property para criar a propriedade e @idade.setter para definir o setter. |
Portanto, a sequência que preenche corretamente as lacunas é property, seguida pelo nome da propriedade idade e finalmente a palavra-chave setter.