用Python實現鏈式呼叫的原理

2021-08-14 09:49:52 字數 684 閱讀 5448

在學習廖雪峰python教程中,學習到定製類__getattr__,具體用法見

廖雪峰教程。在教程中給出了鏈式呼叫的用法,具體**:

利用完全動態的__getattr__,我們可以寫出乙個鏈式呼叫:

class

chain

(object):

def__init__

(self, path=''):

self._path = path

def__getattr__

(self, path):

return chain('%s/%s' % (self._path, path))

def__str__

(self):

return self._path

試試:

>>> chain().status.user.timeline.list

'/status/user/timeline/list'

這樣,無論api怎麼變,sdk都可以根據url實現完全動態的呼叫,而且,不隨api的增加而改變!

在這裡使用了遞迴,在呼叫時chain().status.user.timeline.list中每乙個"."就是一次呼叫__getattr__方法。所以就可以理解為什麼在輸入時要使用xx.xx的格式

python 實現鏈式呼叫 簡單版

class person object definit self,name,age self.name name self.age age self.money 10001 def eat self,food print self.name 喜歡吃 food return self def hobb...

python鏈式呼叫

所謂鏈式呼叫就是呼叫完乙個函式後還能再繼續呼叫其它函式,這樣大大減少了 量,尤其是專案比較大的時候,普通呼叫就是物件名.函式1 物件名.函式2 people.setname 小海 people.setage 20 而鏈式呼叫就是可以只寫一次物件名,就可以達到同樣的效果,原理就是每次呼叫返回的是乙個物...

js實現方法的鏈式呼叫

假如這裡有三個方法 person.unmerried person.process person.married 在jquery中通常的寫法是 person.unmerried process married 而在js中要實現鏈式呼叫,只需在類中的每個方法中通過this關鍵字返回物件例項的引用。fu...