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 相关文章推荐
Python3 能振兴 Python的原因分析
Nov 28 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
python opencv读mp4视频的实例
Dec 07 Python
python字典一键多值实例代码分享
Jun 14 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
简单了解Python多态与属性运行原理
Jun 15 Python
浅谈python出错时traceback的解读
Jul 15 Python
基于Python模拟浏览器发送http请求
Nov 06 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编程函数安全篇
2013/01/08 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
PDO::errorInfo讲解
2019/01/28 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
Python while true实现爬虫定时任务
2020/06/08 Python
什么是python的自省
2020/06/21 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
Python 求向量的余弦值操作
2021/03/04 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
T3官网:头发造型工具
2019/12/26 全球购物
2014年综治宣传月活动总结
2014/04/28 职场文书
开学典礼演讲稿
2014/05/23 职场文书
校运会口号
2014/06/18 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
横空出世观后感
2015/06/09 职场文书
导游词之太原天龙山
2020/01/02 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS