Pular para o conteúdo principal

Questão de Arquitetura de Software — Software — Fundação FAPEC 2021

Arquitetura de SoftwareSoftware
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]
  1. ANenhum, pois o código está INCORRETO.
  2. B[5, 4, 3, 2, 1, 0, -1, -2].
  3. C[5,3,1].
  4. D[2,3,4].
  5. 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

  1. 1Instancia A()
  2. 2Chama __init__
  3. 3range(5) → 0..4
  4. 4list(range(5)) → [0,1,2,3,4]
  5. 5Slice [2::-1] → [2,1,0]
  6. 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.

Alternativa E — ✅ Correta ⟵ GABARITO

Conforme demonstrado, list(range(5))[2::-1] retorna [2,1,0].

PEGA ESSA DICA!

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.

Gabarito: letra E

Link permanente: /questoes/qq634573