Questão nº 43
Questão de Análise de Sistemas · FGV TJDFT 2022 (nº 43)
Analise o código Python 3.9 a seguir.
class Teste:
def ----------
self.altura = xaltura
self.largura = xlargura
def dimensoes(self):
print("altura = " + str(self.altura) + "\n" \
+ "largura = " + str(self.largura))
x = Teste(12, 20)
x.dimensoes()
Para que a execução desse código exiba
altura = 12
largura = 20
o trecho tracejado na segunda linha deve ser substituído por:
- A`__init__(self, xaltura, xlargura):` (alternativa correta)
- B`__init__(xaltura, xlargura):`
- C`init (xaltura, xlargura):`
- D`new (self, args[xaltura, xlargura]):`
- E`new (self, xaltura, xlargura):`
Resposta comentada
Gabarito Alternativa A
O construtor de uma classe em Python é o método especial __init__, que é chamado automaticamente quando criamos um objeto. Ele sempre recebe self como primeiro parâmetro, que representa a própria instância que está sendo criada, e depois os outros argumentos passados na criação (como 12 e 20).
- (A) Correta:
__init__(self, xaltura, xlargura):— é exatamente o que o código precisa: o método especial de inicialização, comselfe os dois parâmetros que serão usados para preencher os atributos. - (B) Incorreta: falta o
self, que é obrigatório em métodos de instância — sem ele, o Python não associa o método ao objeto criado, causando erro de tipo. - (C) Incorreta:
initsem os underscores duplos não é um método especial reconhecido pelo Python, então nunca seria chamado automaticamente na criação do objeto. - (D) Incorreta:
newé um método diferente (usado para controlar a criação da instância em casos avançados), e a sintaxeargs[xaltura, xlargura]não é válida para receber parâmetros normais. - (E) Incorreta: embora tenha
selfe os parâmetros,newnão é o método de inicialização — ele é chamado antes do__init__e não serve para configurar atributos diretamente dessa forma.
Armadilha da banca: a pegadinha mais tentadora é a (B), pois muitos alunos decoram que __init__ recebe os parâmetros, mas esquecem do self — que é o que liga o método à instância. Sem ele, o código falha com TypeError ao tentar criar o objeto.
Fonte: FGV TJDFT 2022 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.