TaskManager upravlja kolekcijom.
Task čuva podatke o jednom zadatku. TaskManager poseduje listu, zato metodi koji pretražuju, menjaju ili uklanjaju stavke pripadaju TaskManageru.
def get_task(self, task_id: str) -> Task:
for task in self.tasks:
if task.task_id == task_id:
return task
raise ValueError("Task was not found.")Petlja ispituje svaki postojeći Task. Odgovarajući task_id vraća isti objekat iz liste. ID koji ne postoji podiže ValueError, pa svaki pozivalac dobija jedan jasan, predvidiv rezultat.
Ova lekcija koristi jednu politiku: duplirani ID-jevi se odbijaju sa ValueError, a ID koji ne postoji takođe podiže ValueError. Ponovljeni poziv complete_task() je bezbedan: zadatak jednostavno ostaje završen.
Nadogradi postojeći metod: add_task() ostaje početna tačka. Pre dodavanja treba da proveri da li get_task() već može da pronađe isti ID i odbije dvosmisleni duplikat.
task = Task("task-1", "Read the plan")
manager = TaskManager()
manager.add_task(task)
task.completed = True
print(manager.tasks[0].completed)Lista čuva referencu na Task objekat, a ne posebnu kopiju. Kada completed postane True, Task do kojeg se stiže preko manager.tasks[0] prikazuje isto promenjeno stanje.
def complete_task(self, task_id: str) -> Task:
task = self.get_task(task_id)
task.completed = True
return taskA small method can reuse get_task() instead of repeating the search loop. You will write the remaining methods yourself in the local project.
Choose predictable behavior
- View and findLet
list_tasks()return the task list andget_task(task_id)return one matching Task. - Complete safelyLet
complete_task()setcompletedto True. Calling it again should not duplicate or break the task. - Delete deliberatelyLet
delete_task()remove the matching Task after it is found. A later lookup for that ID should raise ValueError.
Common task-management mistakes
- Allowing duplicate task IDsTwo different tasks with one ID make get_task() ambiguous. Reject the duplicate before changing the list.
- Returning a hidden failureDo not silently return an unrelated Task for a missing ID. Use the same clear ValueError policy in each operation.
