Questão de Arquitetura de Software — Software — Fundação FAPEC 2021
Arquitetura de Software›Software
Código
qq634573
Banca
Fundação FAPEC
Órgão
PC-MS
Ano
2021
Nível
Superior
Cargo
FAPEC - - Perito Criminal - Área 01 (Análise de Sistemas, Engenharia da Computação e Ciências da Computação)
Considere o código a seguir, escrito em Python 3, uma linguagem popular que suporta orientação a objetos. Após instanciar um objeto da classe A utilizando o construtor padrão, qual será o conteúdo do campo value deste objeto?class A:def __default__(self):self.value = [v for v in range(5, 0, -2)]def __init__(self):self.value = list(range(5))[2::-1]
ANenhum, pois o código está INCORRETO.
B[5, 4, 3, 2, 1, 0, -1, -2].
C[5,3,1].
D[2,3,4].
E[2,1,0].
Revelar gabarito e comentário▾
GabaritoE — [2,1,0].
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Análise de código Python 3: instanciação e inicialização
Gabarito: letra E. Ao instanciar um objeto da classe A com A(), o método __init__ é executado, e não o método __default__. Dentro de __init__, a expressão list(range(5))[2::-1] gera a lista [2,1,0]. A alternativa E reflete exatamente esse resultado.
A classe A define dois métodos:
__default__: não é um método especial; não é invocado na criação do objeto.
__init__: é o construtor padrão, executado automaticamente.
Dentro de __init__:
range(5) produz os números 0,1,2,3,4.
list(range(5)) resulta em [0,1,2,3,4].
O slice [2::-1] significa: começa no índice 2 (valor 2), vai até o início com passo -1, incluindo o índice 0. Obtém-se [2,1,0].
Portanto, self.value é [2,1,0].
Método
Código
Resultado
Chamado na instanciação?
__default__
[v for v in range(5, 0, -2)]
[5, 3, 1]
Não
__init__
list(range(5))[2::-1]
[2, 1, 0]
Sim
1Instancia A()
2Chama __init__
3range(5) → 0..4
4list(range(5)) → [0,1,2,3,4]
5Slice [2::-1] → [2,1,0]
6self.value = [2,1,0]
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que o código está incorreto. O código é sintaticamente válido; __default__ é apenas um método comum (não especial) que não interfere na inicialização.
Alternativa B — ❌ Incorreta
[5,4,3,2,1,0,-1,-2] não corresponde a nenhuma expressão do código. O range(5,0,-2) (presente em __default__) geraria [5,3,1], e não essa sequência.
Alternativa C — ❌ Incorreta
[5,3,1] seria o resultado de range(5,0,-2), que está no método __default__. Como este método não é chamado na instanciação, o valor não é esse.
Alternativa D — ❌ Incorreta
[2,3,4] seria [0,1,2,3,4][2:5] (slice do índice 2 ao fim), mas o slice usado é [2::-1], que inverte a ordem.
Em Python, o método de inicialização padrão é __init__. Nomes como __default__ não são especiais — são apenas métodos comuns. Preste atenção aos métodos especiais (dunder methods) e à ordem de resolução de nomes.