面向對象例子


class SearchEngineBase(object):
    def __init__(self):
        pass

    def add_corpus(self, file_path):
        with open(file_path, 'r') as fin:
            text = fin.read()
        self.process_corpus(file_path, text)

    def process_corpus(self, id, text):
        raise Exception('process_corpus not implemented.')

    def search(self, query):
        raise Exception('search not implemented.')

def main(search_engine):
    for file_path in ['1.txt', '2.txt', '3.txt', '4.txt', '5.txt']:
	    ##遍歷文件,將文件的內容放到字典,健 爲文件名,值爲內容
        search_engine.add_corpus(file_path)

    while True:
        query = input()
        results = search_engine.search(query)
        print('found {} result(s):'.format(len(results)))
        for result in results:
            print(result)










class SimpleEngine(SearchEngineBase):
    def __init__(self):
	    ##調用父類的構造函數
        super(SimpleEngine, self).__init__()
        self.__id_to_texts = {}

    def process_corpus(self, id, text):
	     ##鍵值爲文件名,內容爲值
        self.__id_to_texts[id] = text

    def search(self, query):
        results = []
		##搜索的詞出現在字典的值中 返回內容
        for id, text in self.__id_to_texts.items():
            if query in text:
                results.append(id)
        return results

search_engine = SimpleEngine()
main(search_engine)


########## 輸出 ##########


simple
found 0 result(s):
little
found 2 result(s):
1.txt
2.txt

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章