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的词法分析与语法分析
May 18 Python
python生成器的使用方法
Nov 21 Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
如何基于线程池提升request模块效率
Apr 18 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
python 决策树算法的实现
Oct 09 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 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
PHP中的integer类型使用分析
2010/07/27 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
php中动态调用函数的方法
2015/03/16 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
Js 中debug方式
2010/02/07 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
原生js实现日期联动
2015/01/12 Javascript
使用js画图之画切线
2015/01/12 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
Python开发常用的一些开源Package分享
2015/02/14 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
python游戏开发的五个案例分享
2020/03/09 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
法人委托书
2014/07/31 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
电工生产实习心得体会
2016/01/22 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
ES6 解构赋值的原理及运用
2021/05/25 Javascript
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
Win11软件图标固定到任务栏
2022/04/19 数码科技