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高手之路python处理excel文件(方法汇总)
Jan 07 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
python中os模块详解
Oct 14 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
Tensorflow简单验证码识别应用
May 25 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
python实现小程序推送页面收录脚本
Apr 20 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 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学习之PHP变量
2006/10/09 PHP
php SQL Injection with MySQL
2011/02/27 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
Yii全局函数用法示例
2017/01/22 PHP
图片自动更新(说明)
2006/10/02 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Python程序设计入门(5)类的使用简介
2014/06/16 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python OS模块实例详解
2019/04/15 Python
python中append实例用法总结
2019/07/30 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
关于环保的建议书400字
2014/03/12 职场文书
晨会主持词
2014/03/17 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
项目合作意向书模板
2014/07/29 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
出生公证书
2015/01/23 职场文书
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技