python weibo sdk


class _Callable(object):

def __init__(self, client, name):
self._client = client
self._name = name

def __getattr__(self, attr):
if attr=='get':
return _Executable(self._client, 'GET', self._name)
if attr=='post':
return _Executable(self._client, 'POST', self._name)
name = '%s/%s' % (self._name, attr)
print name
return _Callable(self._client, name)

def __str__(self):
return '_Callable (%s)' % self._name

这是一个递归函数
当调用比如user.show.get 构成了多层的属性访问
重写__getattr__逐级转化成user/show 直到遇见get或post,来执行请求


class _Executable(object):

def __init__(self, client, method, path):
self._client = client
self._method = method
self._path = path

def __call__(self, **kw):
method = _METHOD_MAP[self._method]
if method==_HTTP_POST and 'pic' in kw:
method = _HTTP_UPLOAD
return _http_call('%s%s.json' % (self._client.api_url, self._path), method, self._client.access_token, **kw)

def __str__(self):
return '_Executable (%s %s)' % (self._method, self._path)

利用__call__来接受传入参数 进一步判定请求类型 如果带有图片则成为upload

_http_call方法进行url生成
user.show.get(uid=12345)
最终生成的url为https://api.weibo.com/2/users/show.json?uid=12345
请求后的返回进行json解析
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值