Questão FC373125
Observe os dois trechos de código Python abaixo Código 1: class Tempo: def print_tempo(tempo): print('%.2d:%.2d:%.2d' % (tempo.hour, tempo.minute, tempo.second)) I Código 2: class
Linguagens de Programação para Ciência de Dados
FCC · 2022
Observe os dois trechos de código Python abaixo
Código 1:
class Tempo:
def print_tempo(tempo):
print('%.2d:%.2d:%.2d' % (tempo.hour, tempo.minute, tempo.second))
I
Código 2:
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:
>>> t1 = Tempo()
>>> t1.hour = 11
>>> t1.minute = 15
>>> t1.second = 00
É correto afirmar:
- Em I e em II, se for executado o comando >>> print_tempo(t1) o resultado será 11:15:00
- O Código 2 pode ser reescrito desta maneira equivalente:
class Tempo:
def print_tempo(self):
print('%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second))
- Em II, se for executado o comando >>> print_tempo(t1) a função print_tempo apresentará como resultado 11:15:00
- Em I, se for executado o comando >>> Tempo.print_tempo(t1) o método print_tempo apresentará como resultado 11:15:00
- Em II, se for executado o comando >>> t1.print_tempo() o resultado apresentará erro.
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A alternativa aponta que o método pode ser reescrito trocando o nome do primeiro parâmetro por self. Em Python o primeiro parâmetro de um método de instância recebe automaticamente a instância que chamou o método; o nome desse parâmetro pode ser qualquer identificador.
Portanto, declarar def print_tempo(tempo): ou def print_tempo(self): é semanticamente equivalente: dentro do corpo do método, tempo.hour refere‑se ao mesmo atributo que self.hour.
Na prática, a convenção é usar self para tornar o código claro a outros desenvolvedores, mas isso não é uma palavra‑reservada. Chamadas como t1.print_tempo() passam automaticamente a instância t1 para esse primeiro parâmetro, e também é possível invocar explicitamente Tempo.print_tempo(t1).
Conteúdo do catálogo FC Concursos · Atualizado em