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中为什么要用self探讨
Apr 14 Python
简述Python中的面向对象编程的概念
Apr 27 Python
详解Python中time()方法的使用的教程
May 22 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
用Python进行websocket接口测试
Oct 16 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
在pyCharm中下载第三方库的方法
Apr 18 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
PHP5+UTF8多文件上传类
2008/10/17 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
jquery实现图片左右切换的方法
2015/05/07 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
python僵尸进程产生的原因
2017/07/21 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
基于python3实现倒叙字符串
2020/02/18 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
施工安全承诺书
2014/05/22 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis