關于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.
廢話不多說,上代碼。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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() |