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+PyQt5重新实现QT事件处理程序
Apr 19 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
Windows下PyCharm安装图文教程
Aug 27 Python
python安装scipy的步骤解析
Sep 28 Python
python opencv如何实现图片绘制
Jan 19 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Selenium 安装和简单使用的实现
Dec 04 Python
如何用python反转图片,视频
Apr 24 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连接Access数据库错误及解决方法
2013/06/20 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php去除数组中重复数据
2014/11/18 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python通过shutil实现快速文件复制的方法
2015/03/14 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
python matplotlib库的基本使用
2020/09/23 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
心得体会怎么写
2013/12/30 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书
技校个人求职信范文
2014/01/25 职场文书
消防先进事迹材料
2014/02/10 职场文书
文明班级建设方案
2014/05/15 职场文书
小学教师党员承诺书
2015/04/27 职场文书
在职证明书模板
2015/06/15 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL