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的Django框架中用流响应生成CSV文件的教程
May 02 Python
python多进程实现进程间通信实例
Nov 24 Python
Python中sort和sorted函数代码解析
Jan 25 Python
Django自定义用户认证示例详解
Mar 14 Python
python操作excel的方法
Aug 16 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
用python实现名片管理系统
Jun 18 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
matplotlib对象拾取事件处理的实现
Jan 14 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
PHP数据类型的总结分析
2013/06/13 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
python简单实现旋转图片的方法
2015/05/30 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python实现三次样条插值
2018/12/17 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
详解Python用户登录接口的方法
2019/04/17 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
高三生物教学反思
2014/01/25 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
教师节演讲稿
2014/05/06 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript