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自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
python从子线程中获得返回值的方法
Jan 30 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
Python中__repr__和__str__区别详解
Nov 07 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
Pytorch 如何实现常用正则化
May 27 Python
python获取对象信息的实例详解
Jul 07 Python
基于Python实现流星雨效果的绘制
Mar 18 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
天津市收音机工业发展史
2021/03/04 无线电
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
Python实现选择排序
2017/06/04 Python
Python格式化输出%s和%d
2018/05/07 Python
python生成九宫格图片
2018/11/19 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
pycharm修改file type方式
2019/11/19 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
技校教师求职简历的自我评价
2013/10/20 职场文书
应届生财务会计求职信
2013/11/05 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫