Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析
本文實(shí)例講述了Python設(shè)計(jì)模式之解釋器模式原理與用法。分享給大家供大家參考,具體如下:
解釋器模式(Interpreter Pattern):給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子.
下面是一個(gè)解釋器模式的demo:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大話(huà)設(shè)計(jì)模式 設(shè)計(jì)模式——解釋器模式 解釋器模式(Interpreter Pattern):給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子. """ #抽象一個(gè)解釋器類(lèi) class AbstractExpression(object): def interpreter(self, context): pass #具體解釋器——終端 繼承抽象解釋器 class TerminalExpression(AbstractExpression): def interpreter(self, context): print "終端解釋器",context #具體解釋器——終端 繼承抽象解釋器 class NotTerminalExpression(AbstractExpression): def interpreter(self, context): print "非終端解釋器",context class Context(object): def __init__(self): self.name = "" if __name__ == "__main__": context = Context() context.name = 'Andy' arr_list = [NotTerminalExpression(),TerminalExpression(),TerminalExpression()] for entry in arr_list: entry.interpreter(context)
運(yùn)行結(jié)果:
上面類(lèi)的設(shè)計(jì)如下圖:
當(dāng)有一個(gè)語(yǔ)言需要執(zhí)行,并且可以將該語(yǔ)言的句子表示為抽象語(yǔ)法樹(shù)時(shí),可使用解釋器模式
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python文件讀取和導(dǎo)包的絕對(duì)路徑、相對(duì)路徑詳解
每次在讀或?qū)懳募r(shí),獲取腳本文件的絕對(duì)路徑和相對(duì)路徑時(shí)很容易搞混,下面這篇文章主要給大家介紹了關(guān)于python文件讀取和導(dǎo)包的絕對(duì)路徑、相對(duì)路徑的相關(guān)資料,需要的朋友可以參考下2022-04-04Python?PaddleGAN實(shí)現(xiàn)照片人物性別反轉(zhuǎn)
PaddleGAN中的styleganv2editing.py是支持性別編輯的。所以本文將介紹如何通過(guò)調(diào)整參數(shù),來(lái)試著實(shí)現(xiàn)一下照片的性別翻轉(zhuǎn)。感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python練習(xí)之讀取XML節(jié)點(diǎn)和屬性值的方法
這篇文章主要介紹了Python練習(xí)之讀取XML節(jié)點(diǎn)和屬性值的方法,通過(guò)parse函數(shù)可以讀取XML文檔,該函數(shù)返回ElementTree類(lèi)型的對(duì)象,通過(guò)該對(duì)象的iterfind方法可以對(duì)XML中特定節(jié)點(diǎn)進(jìn)行迭代2022-06-06如何基于Python實(shí)現(xiàn)自動(dòng)掃雷
這篇文章主要介紹了如何基于Python實(shí)現(xiàn)自動(dòng)掃雷,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01conda換源安裝torch+vscode分布式訓(xùn)練調(diào)試的實(shí)現(xiàn)
本文主要介紹了conda換源安裝torch+vscode分布式訓(xùn)練調(diào)試的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06