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从入门到精通(DAY 2)
Dec 20 Python
深入理解NumPy简明教程---数组2
Dec 17 Python
django中的setting最佳配置小结
Nov 21 Python
python的Tqdm模块的使用
Jan 10 Python
pandas 层次化索引的实现方法
Jul 06 Python
python 寻找离散序列极值点的方法
Jul 10 Python
对python中的装包与解包实例详解
Aug 24 Python
Python程序暂停的正常处理方法
Nov 07 Python
Python importlib动态导入模块实现代码
Apr 16 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
Python装饰器如何实现修复过程解析
Sep 05 Python
python基础学习之递归函数知识总结
May 26 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操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
js里的prototype使用示例
2010/11/19 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
Python中__init__.py文件的作用详解
2016/09/18 Python
python调用外部程序的实操步骤
2019/03/04 Python
python实现抖音点赞功能
2019/04/07 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
python 自动识别并连接串口的实现
2021/01/19 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
合伙经营协议书范本
2014/04/18 职场文书
家长学校培训材料
2014/08/20 职场文书
2015年女生节活动总结
2015/02/27 职场文书
雷锋的故事观后感
2015/06/10 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server