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 相关文章推荐
17个Python小技巧分享
Jan 23 Python
Python 的 Socket 编程
Mar 24 Python
python删除列表中重复记录的方法
Apr 28 Python
Python网站验证码识别
Jan 25 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Python新手学习函数默认参数设置
Jun 03 Python
详解Python中的路径问题
Sep 02 Python
Django展示可视化图表的多种方式
Apr 08 Python
Python读写yaml文件
Mar 20 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
综合图片计数器
2006/10/09 PHP
来自PHP.NET的入门教程
2006/10/09 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
asp.net和php的区别点总结
2019/10/10 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
python中from module import * 的一个坑
2014/07/20 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
python实现大文件分割与合并
2019/07/22 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
经典演讲稿范文
2013/12/30 职场文书
暑期社会实践方案
2014/02/05 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
教研处工作方案
2014/05/26 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫