Questão nº 35

Questão de Tecnologia da Informação · FCC TRT17 2022 (nº 35)

FCC2022Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓

Considere o programa em Python abaixo.

class Juiz:
    def __init__(self, nome, trt, processo, ativo):
        self.nome = nome
        self.trt = trt
        self.processo = processo
        self.__ativo = ativo

**I**

if __name__ == "__main__":
    pessoa1 = Juiz("Juiz1", "TRT17", "NP123456", True)
    pessoa1.ocupado()

Para que, ao executar o programa acima em condições ideais, a saída seja:

ativo =  False
O juiz Juiz1 não está ativo no processo NP123456

A lacuna I deve ser preenchida corretamente por:

Resposta comentada

Gabarito Alternativa B

Em Python, um método é uma função definida dentro de uma classe que opera sobre os atributos (dados) de um objeto dessa classe. O primeiro parâmetro de um método, por convenção chamado self, refere-se à própria instância do objeto, permitindo acessar e modificar seus atributos.

  • (A) Incorreta: O nome do método é __ocupado (com dois underscores iniciais), o que o tornaria "privado" (name-mangled) e inacessível diretamente por pessoa1.ocupado(). A chamada no código principal espera um método chamado ocupado. Além disso, print("ativo = False") imprime uma string literal, não o valor da variável self.__ativo.
  • (B) Correta: O nome do método ocupado corresponde à chamada pessoa1.ocupado(). O parâmetro self é usado corretamente para acessar os atributos da instância. self.__ativo = False atualiza o estado do atributo. print("ativo = ", self.__ativo) imprime a string "ativo = " seguida do valor atual de self.__ativo (que é False), com um espaço padrão entre eles, resultando em "ativo = False". A segunda linha de impressão também usa corretamente a concatenação de strings com os atributos self.nome e self.processo para gerar a saída esperada.
  • (C) Incorreta: A sintaxe !pessoa1.__ativo para negação booleana está incorreta em Python (o correto é not). Isso causaria um SyntaxError. Além disso, o objetivo é definir __ativo como False, não alternar seu valor. O uso de pessoa1 como parâmetro em vez de self é uma má prática e pode levar a confusão, embora Python permita.
  • (D) Incorreta: O nome do método __ocupado__ (com dois underscores em ambos os lados) é reservado para métodos especiais (dunder methods) e não seria chamado por pessoa1.ocupado(). O parâmetro pessoa1 em vez de self é inadequado. Mais gravemente, self não estaria definido dentro do método, causando um NameError ao tentar acessar self.__ativo. A concatenação + self.__ativo causaria um TypeError pois não se pode concatenar diretamente uma string com um booleano.
  • (E) Incorreta: O nome do método __ocupado__ (com dois underscores em ambos os lados) é reservado para métodos especiais e não seria chamado por pessoa1.ocupado(). Falta um dois-pontos : após (self), o que resultaria em um SyntaxError. Além disso, self.__ativo = not self.__ativo alternaria o valor de __ativo, mas o objetivo é defini-lo explicitamente como False.

Fonte: FCC TRT17 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho