码迷,mamicode.com
首页 > 其他好文 > 详细

教程里提到的链式调用

时间:2019-03-05 23:01:38      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:nbsp   展开   tle   pat   friends   链式   href   string   list   

举个例子:

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

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

利用完全动态的__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

    __repr__ = __str__

试试:

>>> Chain().status.user.timeline.list #这句是链式调用
‘/status/user/timeline/list‘

Chain().status.user.timeline.list #这句是链式调用是这样展开的
↓ Chain(path= ‘‘).__getattr__(self, path=‘status‘)
return Chain(‘%s/%s‘ % (self._path=‘‘, path= ‘status‘))=Chain(‘/status‘)

↓
Chain(‘/status‘).user.timeline.list

↓Chain(path= ‘/status‘).__getattr__(self, path=‘usr‘)
return Chain(‘%s/%s‘ % (self._path=‘/status‘, path= ‘usr‘))=Chain(‘/status/usr‘)
 
 


教程里提到的链式调用

标签:nbsp   展开   tle   pat   friends   链式   href   string   list   

原文地址:https://www.cnblogs.com/009NotFound/p/10480356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!