사용자로부터 할 일의 종류와 내용을 입력받는 투두리스트 프로그램을 만들어 보겠습니다.
Todo
) 클래스 정의하기먼저 할 일 1개를 나타내는 Todo
클래스를 정의합니다. 해당 클래스는 제목과 할 일의 상태를 나타내는 title
과 status
프로퍼티 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"
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가지 메소드가 존재합니다.
show(self)
: 저장된 모든 할 일을 출력합니다. 이때 각 할 일의 인덱스, 제목, 상태가 모두 출력되도록 합니다.
create(self, title)
: 새로운 할 일을 추가합니다. 할 일은 자동적으로 인덱스가 증가해야 합니다. 문제를 간단하게 만들기 위해서, 추가되는 할 일의 인덱스는 항상 마지막 인덱스보다 1이 큰 값을 가지도록 하면 됩니다.
delete(self, index)
: 저장되어 있는 할 일 중 하나를 index
를 사용해 삭제합니다.
update(self, index, title="", status="")
: 저장되어 있는 할 일 중 하나의 정보를 업데이트합니다. 사용자는 할 일의 제목이나 상태 중 하나만 변경할 수 있어야 합니다. 만일 제목이나 상태가 비어있는 문자열 ""
로 입력된다면, 나머지 값만 업데이트합니다.
update(index, status=status) # status 만 업데이트
update(index, title=title) # title 만 업데이트