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中利用sqrt()方法进行平方根计算的教程
May 15 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
Django  ORM 练习题及答案
Jul 19 Python
python 调试冷知识(小结)
Nov 11 Python
jupyter notebook 增加kernel教程
Apr 10 Python
python如何写出表白程序
Jun 01 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
Dec 07 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
python 实现的车牌识别项目
Jan 25 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 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
网站防止被刷票的一些思路与方法
2015/01/08 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
PHP getName()函数讲解
2019/02/03 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python创建进程fork用法
2015/06/04 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
办公室副主任岗位职责
2013/11/25 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
八一慰问活动方案
2014/02/07 职场文书
团委竞选演讲稿
2014/04/24 职场文书
会计求职自荐信
2014/06/20 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
心得体会格式及范文
2016/01/25 职场文书
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android