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在windows命令行下输出彩色文字的方法
Mar 19 Python
Python中的map()函数和reduce()函数的用法
Apr 27 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
Sep 30 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
Python 字符串与数字输出方法
Jul 16 Python
详解python3中的真值测试
Aug 13 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Python中re模块的元字符使用小结
Apr 07 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
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
Python线程的两种编程方式
2015/04/14 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python List cmp()知识点总结
2019/02/18 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
中级会计职业生涯规划范文
2014/01/16 职场文书
社区学习十八大感想
2014/01/22 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
决心书格式范文
2015/09/23 职场文书
公司会议开幕词
2016/03/03 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang