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 相关文章推荐
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
python中urlparse模块介绍与使用示例
Nov 19 Python
微信跳一跳游戏python脚本
Apr 01 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python对离散变量的one-hot编码方法
Jul 11 Python
python中cPickle类使用方法详解
Aug 27 Python
Python 学习教程之networkx
Apr 15 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
Python缓存技术实现过程详解
Sep 25 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
php缓存技术介绍
2006/11/25 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
python实现在windows下操作word的方法
2015/04/28 Python
Python正规则表达式学习指南
2016/08/02 Python
Django 前后台的数据传递的方法
2017/08/08 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
python实现字典嵌套列表取值
2019/12/16 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
iPython pylab模式启动方式
2020/04/24 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
劳资人员岗位职责
2013/12/19 职场文书
普通话演讲稿
2014/09/03 职场文书
爱心捐助活动总结
2015/05/09 职场文书
订货会主持词
2015/07/01 职场文书
《刷子李》教学反思
2016/02/20 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书