Esta es una aplicación de práctica de conceptos de programación orientada a objetos en python, en la cual se quiere implementar una libreta de tareas pendientes. El modelo del mundo del problema para dicha aplicación es el siguiente:
El código de la aplicación se encuentra incompleto, la idea es completarlo teniendo en cuenta los siguientes pasos.
- En el módulo todo.py, cree una clase
Todoque tenga los siguientes atributos:code_id (int),title (str),description (str),completed (bool),tags (list[str]). En el método inicializador reciba los parámetroscode_id,titleydescriptionpara inicializar los atributos correspondientes. El atributocompletedinicialícelo enFalsey el atributotagsinicialícelo como una lista vacía. - En la clase
Todo, defina un método de instanciamark_completeden el cual se cambia el valor del atributocompletedaTrue. - En la clase
Tododefina un métodoadd_tagque recibe como parámetro un stringtag. En el método debe verificar si eltagno se encuentra en la listatags, entonces lo debe agregar. - En la clase
Todo, defina el método especial__str__que retorna un string. Este método debe retornar un string que contenga el código del todo y el título, de la siguiente forma "code_id - title". - En el módulo todo.py, cree una clase
TodoBookla cual tiene un atributotodosque es un diccionario donde la clave son enteros y los valores son objetos de la claseTodo. En el método inicializador, inicialice el atributotodoscomo un diccionario vacío. - En la clase
TodoBook, defina un método de instanciaadd_todoque recibe los parámetrostitle (str)ydescription (str)y retorna un valor de tipoint. En el cuerpo del método implemente el código necesario para hacer lo siguiente:- Generar un id que sea igual al número de elementos en el diccionario
todosmás uno. - Crear un objeto de la clase
Todo. - Agregar el objeto de la clase
Todoal diccionario utilizando como clave el id generado. - Retornar el id
- Generar un id que sea igual al número de elementos en el diccionario
- En la clase
TodoBook, defina un método de instanciapending_todosque retorne una lista de objetos de la claseTodo. En el cuerpo del método, utilice un list comprehension para crear una lista con todos los objetos del diccionariotodosque tienen el atributocompletedcon valorFalse. - En la clase
TodoBook, defina un método de instanciacompleted_todosque retorne una lista de objetos de la claseTodo. En el cuerpo del método, utilice un list comprehension para crear una lista con todos los objetos del diccionariotodosque tienen el atributocompletedcon valorTrue. - En la clase
TodoBook, defina un método de instanciatags_todo_countel cual retorna un diccionario donde las claves son string y los valores enteros. En el cuerpo del método implemente un algoritmo para construir un diccionario que indique, por cada tag, cuántos objetos Todo tienen dicho tag asignado.
Nota: Debe utilizar pistas de tipos en todos los casos donde sea posible.