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自动化测试工具Splinter简介和使用实例
May 13 Python
在Python中利用Into包整洁地进行数据迁移的教程
Mar 30 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
python实现超简单的视频对象提取功能
Jun 04 Python
python实现电脑自动关机
Jun 20 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
用python打印菱形的实操方法和代码
Jun 25 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 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
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
动态添加js事件实现代码
2009/03/12 Javascript
清空上传控件input file的值
2010/07/03 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
SVG实现时钟效果
2018/07/17 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
使用python模拟高斯分布例子
2019/12/09 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
协议书与合同的区别
2014/04/18 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
关于感谢信的范文
2015/01/23 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
教你nginx跳转配置的四种方式
2022/07/07 Servers