云腾软件

祥云工作室 QQ:252895542

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

现在很多网站都搞REST API,比如新浪微博、豆瓣啥的,调用API的URL类似:

如果要写SDK,给每个URL对应的API都写一个方法,那得累死,而且,API一旦改动,SDK也要改

学习廖雪峰的定制类章节:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319098638265527beb24f7840aa97de564ccc7f20f6000

链式调用的方式实现

  1 class Chain(object):
  2     def __init__(self, path=''):
  3         self.__path = path
  4 
  5     def __getattr__(self, item):
  6         return Chain('%s/%s' % (self.__path, item))
  7 
  8     def __call__(self, *args, **kwargs):
  9         return Chain('%s/%s' % (self.__path, *args))
 10 
 11     def __str__(self):
 12         prefix = 'http://api.server'
 13         return prefix + self.__path
 14 
 15     __repr__ = __str__
 16 
 17 print(Chain().user.friends)
 18 print(Chain().user.timeline.list)
 19 print(Chain().users('zhangsan').repos)
View Code
posted on 2018-04-27 15:18  云腾  阅读(614)  评论(0编辑  收藏  举报