Tweepy api binder和python属性

时间:2016-10-03 00:58:56

标签: python tweepy

我一直在挖掘tweepy源代码,试图了解一切是如何设计的。我对API类和bind_api函数感到困惑。可在此处找到tweepy源代码:https://github.com/tweepy/tweepy

1)为什么几乎每个api都称之为财产?这实际上是做什么的,它提供了什么好处?

2)bind_api如何将参数输入每个api调用?例如,

@property
def get_status(self):
    """ :reference: https://dev.twitter.com/rest/reference/get/statuses/show/%3Aid
        :allowed_param:'id'
    """
    return bind_api(
        api=self,
        path='/statuses/show.json',
        payload_type='status',
        allowed_param=['id']
    )

get_status在其定义中不带任何参数,但调用api.get_status(id ='123')可以正常工作。我很好奇这里发生了什么。我认为这与我的第一个问题有关。

3)遵循同样的格式,tweepy正在使用bind_api,如何获得被提供给api调用的关键字参数?例如,如果我想在id='value'没有提供get_status关键字时打印“无ID提供”,我该如何处理呢?

感谢您的帮助。希望我足够清楚。

1 个答案:

答案 0 :(得分:0)

当我前几天问这个时,我没想到。

bind_api正在返回一个函数。然后在调用该属性时调用此函数。这就是为什么每个api调用都是@property,它也回答了我的第二个问题。