Alternativa E - property; idade; setter
Análise da Questão
Esta questão aborda o conceito de Propriedades (Properties) em Programação Orientada a Objetos, especificamente na linguagem Python. O objetivo é identificar a sintaxe correta para definir uma propriedade chamada idade dentro de uma classe Aluno.
Em Python, para criar uma propriedade com um método de acesso (getter) e um método de alteração (setter), utilizamos os seguintes componentes:
@property: É o decorador usado para definir o método getter (o método que retorna o valor do atributo).nome_do_atributo: É o nome da propriedade (neste caso, idade). Ele deve ser repetido no decorador do setter para vincular a lógica de modificação à propriedade existente..setter: É a parte final do decorador usada para definir o método setter (o método que altera o valor do atributo).
A estrutura de código seria assim:
class Aluno:
# 1. Getter usando o decorador 'property'
@property
def idade(self):
return self._idade
# 2. Setter usando o nome da propriedade + '.setter'
@idade.setter
def idade(self, valor):
self._idade = valor
Por que as outras alternativas estão incorretas?
- A e B (
classmethod / staticmethod): Estes decoradores são usados para métodos de classe ou métodos estáticos, não para a criação padrão de propriedades de instância. - C (
property; property; value): A sequência property; property é inválida porque o segundo decorador precisa do nome da propriedade seguido de .setter, e value não é um comando de definição de propriedade. - D (
property; property; setter): Embora contenha property e setter, a repetição de property como segundo termo está incorreta. O correto é usar o nome da propriedade (idade) antes de .setter.
Portanto, a sequência que preenche corretamente as lacunas para criar a propriedade idade é property, seguida pelo nome da propriedade (idade) e por fim o tipo de método (setter).
Conclusão
A alternativa correta é a E, pois reflete exatamente a sintaxe necessária para definir uma propriedade acessível e modificável em Python.