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函数形参用法实例分析
Aug 04 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
Python中asyncio模块的深入讲解
Jun 10 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
Python post请求实现代码实例
Feb 28 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
Python数组变形的几种实现方法
May 30 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使用curl存储cookie的示例
2014/03/31 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
两款万能的php分页类
2015/11/12 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
js数组的操作详解
2013/03/27 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
python学习笔记:字典的使用示例详解
2014/06/13 Python
用python实现百度翻译的示例代码
2018/03/09 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
七夕活动策划方案
2014/08/16 职场文书
房屋认购协议书
2015/01/29 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL