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异常处理慎用“except:pass”建议
Apr 02 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
浅谈pycharm使用及设置方法
Sep 09 Python
python装饰器代替set get方法实例
Dec 19 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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弹出错误警告函数扩展性强
2014/01/17 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
JavaScript修改css样式style
2008/04/15 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python_LDA实现方法详解
2017/10/25 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
Python WSGI的深入理解
2018/08/01 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
《小小竹排画中游》教学反思
2014/02/26 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
2014年环保局工作总结
2014/12/11 职场文书
关于观后感的作文
2015/06/18 职场文书
运输公司工作总结
2015/08/11 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL