首页 > 代码库 > 基于类的命令行notebook的实现
基于类的命令行notebook的实现
在看一本书《PYTHON3 面向对象编程》
内容丰富,作作记录。
notebook.py
__author__ = ‘chengang882‘import datetime# Store the next available id for all new notelast_id = 0class Note(object): """Represent a note in the notebook. Match against a string in searches and store tags for each note.""" def __init__(self, memo, tags=‘‘): """initialize a note with memo and optional space-separated tags. Automatically set the note‘s creation date and a unique id.""" self.memo = memo self.tags = tags self.creation_date = datetime.date.today() global last_id last_id += 1 self.id = last_id def match(self, filter): """Determine if this note matches the filter text. Return True if it matches, False otherwise. Search is case sensitive and matches both text and tags.""" return filter in self.memo or filter in self.tagsclass Notebook(object): def __init__(self): self.notes = [] def new_note(self, memo, tags=‘‘): self.notes.append(Note(memo, tags)) def _find_note(self, note_id): for note in self.notes: if str(note.id) == str(note_id): return note return None def modify_memo(self, note_id, memo): note = self._find_note(note_id) if note: note.memo = memo return True return False def modify_tags(self, note_id, tags): self._find_note(note_id).tags = tags def search(self, filter): return [note for note in self.notes if note.match(filter)]
menu.py
__author__ = ‘chengang882‘import sysfrom notebook import Notebook, Noteclass Menu: def __init__(self): self.notebook = Notebook() self.choices = { "1": self.show_notes, "2": self.search_notes, "3": self.add_note, "4": self.modify_note, "5": self.quit } def display_menu(self): print(""" Notebook Menu 1. Show all Notes 2. Search Notes 3. Add Note 4. Modify Note 5. Quit """) def run(self): while True: self.display_menu() choice = raw_input("Enter an option: ") action = self.choices.get(str(choice)) if action: action() else: print("{0} is note a valid choice".format(choice)) def show_notes(self, notes=None): if not notes: notes = self.notebook.notes for note in notes: print("{0}: {1}\n{2}".format( note.id, note.tags, note.memo)) def search_notes(self): filter = raw_input("Search for: ") notes = self.notebook.search(filter) self.show_notes(notes) def add_note(self): memo = raw_input("Enter a memo: ") print(memo) self.notebook.new_note(memo) print("Your note has been added.") def modify_note(self): id = raw_input("Enter a note id: ") memo = raw_input("Enter a memo: ") tags = raw_input("Enter tags: ") if memo: self.notebook.modify_memo(id, memo) if tags: self.notebook.modify_tags(id, tags) def quit(self): print("Thank you for using your notebook today.") sys.exit(0)if __name__ == "__main__": Menu().run()
基于类的命令行notebook的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。