Implementa un reloj que maneje horas sin fechas.
Debes poder sumarle y restarle minutos.
Dos relojes que representen la misma hora deben ser iguales entre sí.
Los tests de este ejercicio esperan que tu reloj se implemente en una class Clock.
Si no estás familiarizado con las clases en Python, classes y las clases en Python (de la documentación de Python) son buenos puntos por los que empezar.
Cuando trabajas con objetos y los depuras, es importante tener una buena representación de ese objeto.
Por ejemplo, si creas un nuevo objeto datetime.datetime en el entorno REPL de Python, podrás ver su representación como string:
>>> from datetime import datetime
>>> new_date = datetime(2022, 5, 4)
>>> new_date
datetime.datetime(2022, 5, 4, 0, 0)
Tu class Clock debería crear un object personalizado que maneje horas sin fechas.
Un aspecto importante de esta class será cómo se representa como string.
Otros programadores que usen o llamen a objects Clock creados a partir de la class Clock recurrirán a esta representación como string para depurar y para otras actividades.
Sin embargo, la representación predeterminada de una class personalizada no es muy útil:
>>> Clock(12, 34)
<Clock object st 0x102807b20 >
Para crear una representación más útil, puedes definir un método especial __repr__ en la class.
Lo ideal es que ese método __repr__ devuelva código Python válido que pueda usarse para recrear el objeto cuando se pasa a eval(), tal como se describe en la especificación de un método __repr__.
Devolver código Python válido permite a otro desarrollador copiar y pegar el str directamente en el código o en el REPL.
Un Clock que represente las 11:30 de la mañana podría tener este aspecto:
`Clock(11, 30)`
Definir un método __repr__ es una buena práctica para todas las clases personalizadas.
Algunas cosas más a tener en cuenta:
< ...a practical description... >.Además del método __repr__, también puede que haga falta una representación alternativa del class como string «legible para las personas».
Esta puede usarse para dar formato al objeto de cara a la salida del programa o a la documentación.
Esto se hace escribiendo un método especial __str__.
Veamos datetime.datetime de nuevo:
>>> str(datetime.datetime(2022, 5, 4))
'2022-05-04 00:00:00'
Cuando se le pide a un objeto datetime que se convierta a una representación como string, devuelve un str con el formato del estándar ISO 8601, que la mayoría de las bibliotecas de datetime pueden interpretar para obtener una fecha y una hora legibles para las personas.
En este ejercicio tendrás la oportunidad de escribir un método __str__ para tu Clock, además de un método __repr__.
>>> str(Clock(11, 30))
'11:30'
Para admitir esta conversión a string, tendrás que crear un método especial __str__ en tu class que devuelva un string más «legible para las personas» que muestre la hora del Clock.
Si no creas un método __str__ y llamas a str() sobre tu clase, Python intentará llamar a __repr__ sobre tu clase como alternativa.
Así que, si solo implementas uno de estos dos métodos especiales, es mejor crear un __repr__ en lugar de solo un __str__.
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.