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单元测试框架unittest使用方法讲解
Apr 13 Python
Python执行时间的计算方法小结
Mar 17 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
Python列表(List)知识点总结
Feb 18 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
Python如何生成xml文件
Jun 04 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
Python如何急速下载第三方库详解
Nov 02 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/04/18 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
ECMAScript 创建自己的js类库
2012/11/22 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
python引用DLL文件的方法
2015/05/11 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python实现对输入的密文加密
2019/03/20 Python
python用match()函数爬数据方法详解
2019/07/23 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
flask 实现token机制的示例代码
2019/11/07 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
数据库基础的一些面试题
2012/02/25 面试题
如何保障Web服务器安全
2014/05/05 面试题
中学生期中自我鉴定
2014/04/20 职场文书
施工安全汇报材料
2014/08/17 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
工人先锋号申报材料
2014/12/29 职场文书
介绍信范文大全
2015/05/07 职场文书
雷锋的故事观后感
2015/06/10 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS