import datetime, sys
last_id = 0
class Note:
'''定义一个note类,定义一个接口方法
用于返回是否匹配'''
def __init__(self, memo, tags=''):
'''初始化一些实例属性,引入全局的变量id'''
self.memo = memo
self.tags = tags
self.create_date = datetime.date.today()
global last_id
# 引入全局变量last_id,可以在类创建实例的时候改编它
last_id += 1
# 实际上每创建一个类的实例,都会使全句变量last_id增加1
self.id = last_id
def match(self, filter):
'''传入字符串,看是否有匹配的memo或是tags'''
return filter in self.memo or filter in self.tags
class NoteBook:
'''定义一个笔记本类,这个笔记本的类可以生成一个
装在有所有备注的实例的数组,而且该笔记本类还可以
通过方法修改实例的memo和tags'''
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 note.id == note_id:
return note
return None
# 直接写一个定位note的方法,然后修改其中的实例属性
def modify_memo(self, note_id, memo):
'''当输入正确的note_id时,就会根据参数修改这个
id的memo'''
self._find_note(note_id).memo = memo
def modify_tags(self, note_id, tags):
'''同上'''
self._find_note(note_id).tags = tags
def search(self, filter):
'''找到所有和filter匹配的note,并用列表返回'''
return [note for note in self.notes if
note.match(filter)]
class 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 = input("Enter an option: ")
# 注意input返回的是一个字符串
action = self.choices.get(choice)
if action:
action()
# 这个我感觉是精华
else:
print('{choice} is not a valid choice'.format(choice=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 = input('Search for :')
notes = self.notebook.search(filter)
self.show_notes(notes)
def add_note(self):
memo = input("Enter a memo:")
self.notebook.new_note(memo)
print("your note has been added")
def modify_note(self):
id = input("Enter a note id:")
memo = input("Enter a memo:")
tags = input("Enter a 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 you notebook today")
sys.exit(0)
if __name__ == "__main__":
Menu().run()
python3面对对象编程:简单的记事本
最新推荐文章于 2024-06-22 11:24:04 发布