Python实现类似jQuery使用中的链式调用的示例

关于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() 
(0)

相关推荐

  • Python调用C/C++动态链接库的方法详解

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef EXPORT_HELLO_DLL #define HELLO_API __declspec(dllexport) #else #define HELLO_API __declspec(dllimport) #endif extern "C" { HELLO_API int IntAdd(in

  • c++生成dll使用python调用dll的方法

    第一步,建立一个CPP的DLL工程,然后写如下代码,生成DLL 复制代码 代码如下: #include <stdio.h> #define DLLEXPORT extern "C" __declspec(dllexport) DLLEXPORT int __stdcall hello()     {         printf("Hello world!\n");         return 0;     } 第二步,编写一个 python 文件:

  • Python实现子类调用父类的方法

    本文实例讲述了Python实现子类调用父类的方法.分享给大家供大家参考.具体实现方法如下: python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找. 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的. 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题

  • python实现调用其他python脚本的方法

    本文实例讲述了python实现调用其他python脚本的方法,分享给大家供大家参考.具体方法如下: 该实例调用当前目录下的md5get.py脚本.代码如下: import os import logging import subprocess log = logging.getLogger("Core.Analysis.Processing") INTERPRETER = "/usr/bin/python" if not os.path.exists(INTERPR

  • Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例

    每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见http://nodejs.org/api/child_process.html,NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入.标准输出及标准错误输出的接口. NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有: 标准输入.标准输出及标准错误输出的接口 child.stdin 获取标准输入 child.

  • 举例讲解Linux系统下Python调用系统Shell的方法

    时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 1.1. os模块的exec方法族 Python的exec系统方法同Unix的exec系统调用是一致的.这些方法适用于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回.( 这个看了点 help(os)  --> search "exec" 的相关介绍,但是没太

  • python调用shell的方法

    1.1  os.system(command) 在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态.这实际上是使用C标准库函数system()实现的.这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果. 1.2  os.popen(command,mode) 打开一个与command进程之间的管道.这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是'r').如果mode为'r',可以使用

  • python实现根据窗口标题调用窗口的方法

    本文实例讲述了python实现根据窗口标题调用窗口的方法.分享给大家供大家参考.具体分析如下: 当你知道一个windows窗口的标题后,可以用下面的代码调用窗口,甚至向窗口内写入内容. #-*-coding:utf-8-*- import win32gui,win32con #下面的是窗口的标题名称,这样是一定错的,但在控制台就可以正常使用 #写在文件里要用U编码 a=u"jb51.net" dlg=win32gui.FindWindow(None,a) //用控件的ID取得控件的句柄

  • Python实现类似jQuery使用中的链式调用的示例

    关于jQuery的链式调用 真正有意义的链式调用也就是方法链(method chaining).方法链这个词是有的,而且使用的很广泛.其实很多人口中的"链式调用"实际上就是指方法链.但是"链式调用"这个词语还可以描述函数调用链,所以让它自身的存在价值变得难以理解. 我总结的方法链的价值有这么几个: 1. 让调用过程更接近自然语言. 2. 把原本参数列表复杂的方法化作多个参数列表简单的方法来使用. 3. 减少不必要的代码量. 这个三点都是有益于开发的,所以方法链的存在

  • JQuery特殊效果和链式调用操作示例

    本文实例讲述了JQuery特殊效果和链式调用操作.分享给大家供大家参考,具体如下: JQuery的特殊效果 fadeOut()淡入 fadeToggle()切换淡入淡出 hide() 隐藏元素 show() 现实元素 toggle() 切换元素的可见状态 slideDown() 向下展开 slideUp() 向上卷起 slideToggle()依次展开或者卷起某个元素 <!DOCTYPE html> <html lang="en"> <head> &

  • Python实现类似比特币的加密货币区块链的创建与交易实例

    虽然有些人认为区块链是一个早晚会出现问题的解决方案,但是毫无疑问,这个创新技术是一个计算机技术上的奇迹.那么,究竟什么是区块链呢? 区块链 以比特币(Bitcoin)或其它加密货币按时间顺序公开地记录交易的数字账本. 更通俗的说,它是一个公开的数据库,新的数据存储在被称之为区块(block)的容器中,并被添加到一个不可变的链(chain)中(因此被称为区块链(blockchain)),之前添加的数据也在该链中.对于比特币或其它加密货币来说,这些数据就是一组组交易,不过,也可以是其它任何类型的数据

  • JavaScript DSL 流畅接口(使用链式调用)实例

    认真研究了一会DSL,发现了这么几件有趣的事,JavaScript用得最多的一个东西怕是链式调用 (方法链,即Method Chaining). 有意思的是Martin Flower指出: 复制代码 代码如下: I've also noticed a common misconception - many people seem to equate fluent interfaces with Method Chaining. Certainly chaining is a common tec

  • Python中类似于jquery的pyquery库用法分析

    本文实例讲述了Python中类似于jquery的pyquery库用法.分享给大家供大家参考,具体如下: pyquery:一个类似于jquery的Python库 pyquery可以使你在xml文档上做jquery查询,它的API尽可能地类似于jquery.pyquery使用lxml执行快速的xml和html操作. 这并非(至少目前还不是)一个生成javascript代码或者与javascript代码做交互的库.pyquery的作者只是由于非常喜欢jquery的API因而将其用python实现. 该

  • 在JavaScript中实现链式调用的实现

    链式调用实现本身比较简单,也有很多文章详细阐述了其实现方式.本文更多从链式调用方法返回值的角度,更进一步来说明如何实现链式调用. 什么是链式调用 链式调用在 JavaScript 语言界很常见,如 jQuery . Promise 等,都是使用的链式调用.链式调用可以让我们在进行连续操作时,写出更简洁的代码. new Promise((resolve, reject) => { resolve(); }) .then(() => { throw new Error('Something fai

  • 《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析

    本文实例讲述了Javascript面向对象程序设计链式调用.分享给大家供大家参考,具体如下: 1.链式调用: jquery可能是目前大家最常用到的js框架了,也习惯了如下的调用方式: $('.someclass').show().css('xxx','xxxx').click(function(){}).xxx-- 这种调用方式就叫做链式调用,也就是说在调用一个方法之后,可以使用方法的返回值来继续进行方法调用. 2.如何实现链式调用: 了解了什么是链式调用,我们再来看如何实现链式调用,从1中所述

  • JavaScript链式调用原理与实现方法详解

    本文实例讲述了JavaScript链式调用原理与实现方法.分享给大家供大家参考,具体如下: 1.什么是链式调用? 这个很容易理解,例如 $('text').setStyle('color', 'red').show(); 一般的函数调用和链式调用的区别:链式调用完方法后,return this返回当前调用方法的对象. 首先,我们先来看看一般函数的调用方式 (1)先创建一个简单的类 //创建一个bird类 function Bird(name) { this.name=name; this.run

  • axios 拦截器管理类链式调用手写实现及原理剖析

    目录 axios库的拦截器使用 整体设计 拦截器管理类实现 接口定义 代码实现 链式调用实现 axios库的拦截器使用 我们知道axios库的拦截器的使用方式如下: // 添加一个请求拦截器 axios.interceptors.request.use(function (config) { // 在发送请求之前可以做一些事情 return config; }, function (error) { // 处理请求错误 return Promise.reject(error); }); // 添

  • JS链式调用的实现方法

    链式调用    链式调用其实只不过是一种语法招数.它能让你通过重用一个初始操作来达到用少量代码表达复杂操作的目的.该技术包括两个部分: 一个创建代表HTML元素的对象的工厂. 一批对这个HTML元素执行某些操作的方法. 调用链的结构$函数负责创建支持链式调用的对象 复制代码 代码如下: (function() {    /*     * 创建一个私有class     * @param {Object} els  arguments 所有参数组成的类数组     */    function _

随机推荐