關(guān)于jQuery的鏈?zhǔn)秸{(diào)用
真正有意義的鏈?zhǔn)秸{(diào)用也就是方法鏈(method chaining)。方法鏈這個(gè)詞是有的,而且使用的很廣泛。其實(shí)很多人口中的“鏈?zhǔn)秸{(diào)用”實(shí)際上就是指方法鏈。但是“鏈?zhǔn)秸{(diào)用”這個(gè)詞語還可以描述函數(shù)調(diào)用鏈,所以讓它自身的存在價(jià)值變得難以理解。
我總結(jié)的方法鏈的價(jià)值有這么幾個(gè):
1. 讓調(diào)用過程更接近自然語言。
2. 把原本參數(shù)列表復(fù)雜的方法化作多個(gè)參數(shù)列表簡單的方法來使用。
3. 減少不必要的代碼量。
這個(gè)三點(diǎn)都是有益于開發(fā)的,所以方法鏈的存在很有意義。jQuery的很多東西就是使用了方法鏈的概念。
總之,如果“鏈?zhǔn)秸{(diào)用”這個(gè)詞還是盡量別用,因?yàn)闊o法從字面判斷含義。除非你想說明的是上面這個(gè)腦殘東西,你可以用“鏈?zhǔn)秸{(diào)用”去說,如果只是想描述方法鏈的概念,就直接說方法鏈就行了。
Python實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用
用過jquery的一般都知道在jquery中可以鏈?zhǔn)秸{(diào)用,代碼簡潔優(yōu)雅。比如$(“a”).addClass(“test”).show().html(“foo”);。
在redis-py中的pipeline中也可以鏈?zhǔn)秸{(diào)用,比如pipe.set('foo', 'bar').sadd('faz', 'baz').incr('auto_number').execute() 。
那么究竟怎么實(shí)現(xiàn)的呢?
很簡單,返回對象自己就行了,即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() |