最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python设计模式编程中解释器模式的简单程序示例分享

来源:动视网 责编:小采 时间:2020-11-27 14:35:29
文档

Python设计模式编程中解释器模式的简单程序示例分享

Python设计模式编程中解释器模式的简单程序示例分享:模式特点:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 我们来看一下下面这样的程序结构: class Context: def __init__(self): self.input= self.output= class A
推荐度:
导读Python设计模式编程中解释器模式的简单程序示例分享:模式特点:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 我们来看一下下面这样的程序结构: class Context: def __init__(self): self.input= self.output= class A
模式特点:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

我们来看一下下面这样的程序结构:

class Context:
 def __init__(self):
 self.input=""
 self.output=""

class AbstractExpression:
 def Interpret(self,context):
 pass

class Expression(AbstractExpression):
 def Interpret(self,context):
 print "terminal interpret"

class NonterminalExpression(AbstractExpression):
 def Interpret(self,context):
 print "Nonterminal interpret"

if __name__ == "__main__":
 context= ""
 c = []
 c = c + [Expression()]
 c = c + [NonterminalExpression()]
 c = c + [Expression()]
 c = c + [Expression()]
 for a in c:
 a.Interpret(context)

那么它所体现出的类图是这样的:

201632150316773.png (682×450)

再来看一个例子:

#encoding=utf-8 
# 
#by panda 
#解释器模式 
 
def printInfo(info): 
 print unicode(info, 'utf-8').encode('gbk'), 
 
#上下文类:演奏内容 
class PlayContext(): 
 text = None 
 PlayText = None 
 
#抽象表达式类 
class Expression(): 
 def Interpret(self, context): 
 if len(context.PlayText) == 0: 
 return 
 else: 
 playKey = context.PlayText[0:1] 
 context.PlayText = context.PlayText[2:] 
 tmp = context.PlayText.index(' ') #找出第一个空格出现的位置 
 playValue = context.PlayText[0:tmp] 
 context.PlayText = context.PlayText[tmp+1:] 
 self.Excute(playKey,playValue) 
 
 def Excute(self,playKey,playValue): 
 pass 
 
#音高 
class Pitch(Expression): 
 pitch = None 
 def Excute(self, key, value): 
 value = int(value) 
 if value == 1: 
 self.pitch = '低音' 
 elif value == 2: 
 self.pitch = '中音' 
 elif value == 3: 
 self.pitch = '高音' 
 printInfo(self.pitch) 
 
#音符 
class Note(Expression): 
 Notes = { 
 'C':1, 
 'D':2, 
 'E':3, 
 'F':4, 
 'G':5, 
 'A':6, 
 'B':7, 
 } 
 note = None 
 def Excute(self, key, value): 
 self.note = self.Notes[key] 
 printInfo('%d' % self.note) 
 
 
def clientUI(): 
 context = PlayContext() 
 context.PlayText = "O 2 E 0.5 G 0.5 A 3 E 0.5 G 0.5 D 3 E 0.5 G 0.5 A 0.5 O 3 C 1 O 2 A 0.5 G 1 C 0.5 E 0.5 D 3 " 
 expression = None; 
 while(len(context.PlayText) > 0): 
 str = context.PlayText[0:1]; 
 if(str == 'O'): 
 expression = Pitch() 
 elif(str == 'C' or str == 'D' or str == 'E' or str == 'F' or str == 'G' or str == 'A' or str == 'B' or str == 'P'): 
 expression = Note() 
 expression.Interpret(context) 
 
 return 
 
if __name__ == '__main__': 
 clientUI(); 


类图:

201632150401221.gif (695×368)

文档

Python设计模式编程中解释器模式的简单程序示例分享

Python设计模式编程中解释器模式的简单程序示例分享:模式特点:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 我们来看一下下面这样的程序结构: class Context: def __init__(self): self.input= self.output= class A
推荐度:
标签: 模式 的程序 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top