1. 클래스 정의하기

사용자로부터 할 일의 종류와 내용을 입력받는 투두리스트 프로그램을 만들어 보겠습니다.

(1) 할 일(Todo) 클래스 정의하기

먼저 할 일 1개를 나타내는 Todo 클래스를 정의합니다. 해당 클래스는 제목과 할 일의 상태를 나타내는 titlestatus 프로퍼티 2개를 가지고, 생성자 이외의 메소드는 가지고 있지 않습니다. 이 프로퍼티는 객체화 과정에서 초기화되어야 합니다. 해당 코드를 todo.py 에 구현해 보세요.

테스트 코드는 다음과 같습니다. 이때 if __name__ == "__main__": 의 의미는 현재 모듈을 python todo.py 명령어로 실행했을 때만 실행된다는 뜻입니다.

if __name__ == "__main__":
    todo = Todo("drink coffee", "todo")
    assert todo.title == "drink coffee"
    assert todo.status == "todo"

(2) 할 일 목록(TodoList) 클래스 정의하기

그 다음은 Todo 클래스를 딕셔너리 형태로 저장하고 있는 TodoList 클래스를 만들어 보겠습니다. 해당 클래스는 todolist.py 파일에 구현합니다. 객체화 시에 데이터는 아래와 같이 입력받게 됩니다.

class TodoList:
    def __init__(self, data):
        ...

    def show(self):
        ...

    def create(self, title):
        ...

    def delete(self, index):
        ...

    def update(self, index, title="", status=""):
        ...

if __name__ == "__main__":
    data = {
        1: Todo("drink coffee", "todo"),
        2: Todo("drink water", "done"),
        3: Todo("study Python", "todo"),
    }

    todo_list = TodoList(data)

이때 data 가 인스턴스 내부에 저장되어야 하기 때문에 해당 딕셔너리를 프로퍼티로 가지고 있어야 합니다. 해당 클래스에는 4가지 메소드가 존재합니다.