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使用新浪微博api上传图片到微博示例
Jan 10 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
python中join()方法介绍
Oct 11 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
Python文件路径名的操作方法
Oct 30 Python
Python面向对象编程基础实例分析
Jan 17 Python
多个python文件调用logging模块报错误
Feb 12 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
如何用Python搭建gRPC服务
Jun 30 Python
Python find()、rfind()方法及作用
Dec 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&MYSQL分页原理及实现
2007/01/02 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
python基于opencv检测程序运行效率
2019/12/28 Python
python如何保存文本文件
2020/06/07 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
家佳咖啡店创业计划书
2013/12/27 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
捐书活动总结
2014/05/04 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
晚会开幕词
2015/01/28 职场文书
运动会广播稿50字
2015/08/19 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers