参考了一下公司 python 达人 rpc 接口级联 api 调用
rpc.api.users.list()
rpc.api.login(username='',password='')
rpc['api/users'](id=222)
写了一个 demo,python 确实很简洁,不到 30 行代码搞定
# coding=utf-8 class NameChain(object): def __init__(self,prefix,callback): self._prefix = prefix self._callback = callback def __getattr__(self,item): next_prefix = self._prefix + '/' + item return NameChain(next_prefix,self._callback) def __call__(self,**kw): self._callback(self._prefix,kw) def __getitem__(self,item): self._prefix = item return self class Service(object): def __init__(self): self._api = NameChain('api',self._invoke) def _invoke(self,method,params): print '******************' print 'invoke method:',method if len(params) ==0: print 'params is empty' return print 'params is' for k,v in params.iteritems(): print k,':',v @property def api(self): return self._api s = Service() api = s.api # 调用方式一 print '调用方式一' # api/users api.users() # api/user params {"id",111,"name":"leslie"} api.user(id=111,name='leslie') # pai/user/tags api.user.tags() #api/user/tags/list params {"id",111,"session_id","love you forever"} api.user.tags.list(id=111,session_id='love you forever') # 调用方式二 print '调用方式二' api['api/users']() api['api/users'](id=111,name='leslie') api['api/user/tags']() api['api/user/tags/list'](id=111,session_id='love you forever')