Python设计模式之解释器模式原理与用法实例分析


Posted in Python onJanuary 10, 2019

本文实例讲述了Python设计模式之解释器模式原理与用法。分享给大家供大家参考,具体如下:

解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.

下面是一个解释器模式的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——解释器模式
解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.
"""
#抽象一个解释器类
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)

运行结果:

Python设计模式之解释器模式原理与用法实例分析

上面类的设计如下图:

Python设计模式之解释器模式原理与用法实例分析

当有一个语言需要执行,并且可以将该语言的句子表示为抽象语法树时,可使用解释器模式

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python排序算法实例代码
Aug 10 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
python3中numpy函数tile的用法详解
Dec 04 Python
Python流程控制常用工具详解
Feb 24 Python
Python通过2种方法输出带颜色字体
Mar 02 Python
Python新手学习标准库模块命名
May 29 Python
python高级特性简介
Aug 13 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
pytorch 如何把图像数据集进行划分成train,test和val
May 31 Python
详解pandas安装若干异常及解决方案总结
Jan 10 #Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 #Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 #Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 #Python
Python设计模式之桥接模式原理与用法实例分析
Jan 10 #Python
Python基础教程之异常详解
Jan 10 #Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 #Python
You might like
PHP+DBM的同学录程序(3)
2006/10/09 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
浅谈Python 对象内存占用
2016/07/15 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python 含参构造函数实例详解
2017/05/25 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
python和opencv实现抠图
2018/07/18 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
汽车技术服务英文求职信范文
2014/01/02 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
党组织公开承诺书
2014/03/29 职场文书
美术课外活动总结
2014/07/08 职场文书
快递员岗位职责
2014/09/12 职场文书
《小小的船》教学反思
2016/02/18 职场文书