Implemente um relógio que lida com horários sem datas.
Você deve conseguir somar e subtrair minutos a ele.
Dois relógios que representam o mesmo horário devem ser iguais entre si.
Os testes deste exercício esperam que o seu relógio seja implementado em uma class Clock.
Se você ainda não conhece classes em Python, classes e classes (da documentação do Python) são bons lugares para começar.
Ao trabalhar com objetos e depurar esse código, é importante ter uma boa representação desse objeto.
Por exemplo, se você criar um novo objeto datetime.datetime no ambiente REPL do Python, poderá ver a representação em string dele:
>>> from datetime import datetime
>>> new_date = datetime(2022, 5, 4)
>>> new_date
datetime.datetime(2022, 5, 4, 0, 0)
A sua class Clock deve criar um object customizado que lida com horários sem datas.
Um aspecto importante dessa class será como ela é representada como uma string.
Outras pessoas que usam ou chamam objects Clock criados a partir da class Clock vão consultar essa representação em string para depurar e fazer outras atividades.
No entanto, a representação padrão de uma class customizada não ajuda muito:
>>> Clock(12, 34)
<Clock object st 0x102807b20 >
Para criar uma representação mais útil, você pode definir um método especial __repr__ na class.
O ideal é que esse método __repr__ retorne código Python válido que possa ser usado para recriar o objeto quando passado para eval(), como descrito na especificação de um método __repr__.
Retornar código Python válido permite que outra pessoa desenvolvedora copie e cole a str diretamente no código ou no REPL.
Uma Clock que representa 11:30 da manhã ficaria assim:
`Clock(11, 30)`
Definir um método __repr__ é uma boa prática para todas as classes customizadas.
Alguns pontos adicionais a considerar:
< ...a practical description... >.Além do método __repr__, também pode ser necessário ter uma representação em string alternativa, "legível para humanos", da class.
Isso pode ser usado para formatar o objeto para a saída do programa ou para a documentação.
Isso é feito escrevendo um método especial __str__.
Vejamos o datetime.datetime de novo:
>>> str(datetime.datetime(2022, 5, 4))
'2022-05-04 00:00:00'
Quando pedimos que um objeto datetime se converta para uma representação em string, ele retorna uma str formatada de acordo com o padrão ISO 8601, que a maioria das bibliotecas de data e hora consegue interpretar como uma data e hora legíveis para humanos.
Neste exercício, você terá a chance de escrever um método __str__ para o seu Clock, além de um método __repr__.
>>> str(Clock(11, 30))
'11:30'
Para dar suporte a essa conversão para string, você precisará criar um método especial __str__ na sua class que retorne uma string mais "legível para humanos", mostrando o horário do Clock.
Se você não criar um método __str__ e chamar str() na sua classe, o Python vai tentar chamar o __repr__ da sua classe como alternativa.
Então, se você implementar apenas um desses dois métodos especiais, é melhor criar um __repr__ do que apenas um __str__.
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.