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-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
python实现简单神经网络算法
Mar 10 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
python处理multipart/form-data的请求方法
Dec 26 Python
python三引号输出方法
Feb 27 Python
在Django的View中使用asyncio的方法
Jul 12 Python
Python实现微信机器人的方法
Sep 06 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
django-csrf使用和禁用方式
Mar 13 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 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 验证码制作(网树注释思想)
2009/07/20 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python3爬取torrent种子链接实例
2020/01/16 Python
python中xlrd模块的使用详解
2021/02/01 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
银行介绍信范文
2014/01/10 职场文书
关于建议书的格式范文
2014/05/20 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
护士医德医风心得体会
2016/01/25 职场文书
工作报告范文
2019/06/20 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server