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的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
Python中的枚举类型示例介绍
Jan 09 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
使用python远程操作linux过程解析
Dec 04 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
python的Jenkins接口调用方式
May 12 Python
python 通过使用Yolact训练数据集
Apr 06 Python
Python超详细分步解析随机漫步
Mar 17 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判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
javascript编写简易计算器
2017/05/06 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
JS中Object对象的原型概念基础
2018/01/29 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
用实例分析Python中method的参数传递过程
2015/04/02 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
Python os模块常用方法和属性总结
2020/02/20 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
DBA的职责都有哪些
2012/05/16 面试题
违反课堂纪律检讨书
2014/01/19 职场文书
九年级体育教学反思
2014/01/23 职场文书
小学生暑假安全公约
2015/07/14 职场文书
汽车销售员工作总结
2015/08/12 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
PHP 时间处理类Carbon
2022/05/20 PHP