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中的XML库4Suite Server的介绍
Apr 14 Python
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
python实现外卖信息管理系统
Jan 11 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
python自然语言处理之字典树知识总结
Apr 25 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
详解Python中break语句的用法
2015/05/14 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
管理科学大学生求职信
2013/11/13 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
办公室前台岗位职责
2014/01/04 职场文书
淘宝活动总结范文
2014/06/26 职场文书
社区娱乐活动方案
2014/08/21 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书