Python实现类似jQuery使用中的链式调用的示例


Posted in Python onJune 16, 2016

关于jQuery的链式调用
真正有意义的链式调用也就是方法链(method chaining)。方法链这个词是有的,而且使用的很广泛。其实很多人口中的“链式调用”实际上就是指方法链。但是“链式调用”这个词语还可以描述函数调用链,所以让它自身的存在价值变得难以理解。
我总结的方法链的价值有这么几个:
1. 让调用过程更接近自然语言。
2. 把原本参数列表复杂的方法化作多个参数列表简单的方法来使用。
3. 减少不必要的代码量。
这个三点都是有益于开发的,所以方法链的存在很有意义。jQuery的很多东西就是使用了方法链的概念。
总之,如果“链式调用”这个词还是尽量别用,因为无法从字面判断含义。除非你想说明的是上面这个脑残东西,你可以用“链式调用”去说,如果只是想描述方法链的概念,就直接说方法链就行了。

Python实现链式调用
用过jquery的一般都知道在jquery中可以链式调用,代码简洁优雅。比如$(“a”).addClass(“test”).show().html(“foo”);。
在redis-py中的pipeline中也可以链式调用,比如pipe.set('foo', 'bar').sadd('faz', 'baz').incr('auto_number').execute() 。
那么究竟怎么实现的呢?
很简单,返回对象自己就行了,即return self.
废话不多说,上代码。

class Person: 
  def name(self, name): 
    self.name = name 
    return self 
 
  def age(self, age): 
    self.age = age 
    return self 
 
  def show(self): 
    print "My name is", self.name, "and I am", self.age, "years old." 
 
p = Person() 
p.name("Li Lei").age(15).show()
Python 相关文章推荐
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python零基础入门学习之输入与输出
Apr 03 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
python内置模块collections知识点总结
Dec 19 Python
python新手学习使用库
Jun 11 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
Python基础之字符串格式化详解
Apr 21 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
浅析Python中else语句块的使用技巧
Jun 16 #Python
python基础教程之分支、循环简单用法
Jun 16 #Python
python3音乐播放器简单实现代码
Apr 20 #Python
使用python3.5仿微软记事本notepad
Jun 15 #Python
python3.5仿微软计算器程序
Mar 30 #Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 #Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 #Python
You might like
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
封装一个PDO数据库操作类代码
2009/09/09 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
使用js实现数据格式化
2014/12/03 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
python爬取天气数据的实例详解
2020/11/20 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
业务代表的岗位职责
2013/11/16 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
班训口号大全
2014/06/18 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
青岛导游词
2015/02/12 职场文书
求职自我评价范文
2015/03/09 职场文书
三方合作意向书范本
2015/05/09 职场文书
行政处罚决定书
2015/06/24 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript