Questão nº 34

Questão de Programação · FCC TJ-CE 2022 (nº 34)

FCC2022Analista Judiciário - Especialidade Ciência da Computação - Área Sistemas da InformaçãoProgramação
Gabarito: Bver comentário ↓

Observe os dois trechos de código Python abaixo

Código 1:

```python
class Tempo:

def print_tempo(tempo):
print('%.2d:%.2d:%.2d' % (tempo.hour, tempo.minute, tempo.second))
I
```

Código 2:

```python
class Tempo:
def print_tempo(tempo):
print('%.2d:%.2d:%.2d' % (tempo.hour, tempo.minute, tempo.second))
II
```

Considere que foram executados estes comandos, antes de I e antes de II, em ambiente configurado em condições ideais:

```python
>>> t1 = Tempo()
>>> t1.hour = 11
>>> t1.minute = 15
>>> t1.second = 00
```

É correto afirmar:

Resposta comentada

Gabarito Alternativa B

Em Python, quando você define uma função dentro de uma classe, ela se torna um método. O primeiro parâmetro de um método (que por convenção chamamos de self, mas pode ser qualquer nome como tempo neste caso) sempre se refere à própria instância do objeto que está chamando o método.

  • (A) Incorreta: O comando print_tempo(t1) resultaria em um NameError, pois print_tempo é um método definido dentro da classe Tempo e não está disponível diretamente no escopo global. Para chamá-lo, seria necessário usar t1.print_tempo() ou Tempo.print_tempo(t1).
  • (B) Correta: Em Python, o primeiro parâmetro de um método de instância (como tempo no código original) é convencionalmente chamado de self. Ele representa a própria instância do objeto. Usar self em vez de tempo é uma prática padrão e torna o código mais legível e idiomático, mas funcionalmente ambos os códigos são equivalentes, pois tempo e self recebem a mesma instância do objeto.
  • (C) Incorreta: Assim como na alternativa A, o comando print_tempo(t1) causaria um NameError, pois o método não está acessível diretamente no escopo global.
  • (D) Incorreta: Embora o comando Tempo.print_tempo(t1) seja uma forma válida de chamar o método (passando explicitamente a instância t1 como o primeiro argumento tempo), a alternativa é considerada incorreta pelo gabarito oficial. O foco da questão, conforme o gabarito, é a equivalência na definição do método e o papel do primeiro parâmetro, e não apenas uma forma de chamá-lo.
  • (E) Incorreta: O comando t1.print_tempo() é a forma mais comum e idiomática de chamar um método de instância. Python automaticamente passa a instância t1 como o primeiro argumento (tempo no método), e o método executaria corretamente, imprimindo 11:15:00. Portanto, não apresentaria erro.

Fonte: FCC TJ-CE 2022 Analista Judiciário - Especialidade Ciência da Computação - Área Sistemas 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