0

我正在尝试覆盖此类的名为 GetFollowerIDs 的方法: https ://github.com/bear/python-twitter/blob/master/twitter.py#L3705

我想要实现的是正常执行该功能,然后得到next_cursor不只是result.

我尝试了以下方法:

class MyApi(twitter.Api):
    def GetFollowerIDs(self, *args, **kwargs):
        super(MyApi, self).GetFollowerIDs(*args, **kwargs)

        print result
        print next_cursor

我收到了这个错误:

TypeError: unbound method GetFollowerIDs() must be called with MyApi instance as first argument (got nothing instead)

当这样调用它时:

ids = MyApi.GetFollowerIDs(
                    screen_name=options['username'],
                    cursor=cursor,
                    count=options['batch-size'],
                    total_count=options['total'],
                )

最重要的是,result并且next_cursor已经显示为在我的 IDE 中未定义。

4

2 回答 2

2

与您的TypeError定义无关,而是与您的电话有关:

ids = MyApi.GetFollowerIDs(
                    screen_name=options['username'],
                    cursor=cursor,
                    count=options['batch-size'],
                    total_count=options['total'],
                )

GetFollowerIDs是一个实例方法——这就是为什么它需要一个self参数。所以你必须在类的实例上调用它,而不是类本身。

API 文档示例展示了如何正确创建和使用twitter.API; 您将做完全相同的事情,除了创建和使用的实例MyApi

您可能还想阅读有关Classes的教程或一些第三方教程,如果一旦指出这一点并不明显。


同时,在方法中,您通过super...正确调用基类,但这不会让您从基类方法访问局部变量。局部变量是局部的;它们仅在方法运行时存在。因此,在基类方法返回后,它们甚至不再存在。

您的 IDE 说它们未定义的原因是它们实际上未定义,除非在该方法的实现中。

如果您确实需要访问方法实现的内部状态,唯一合理的解决方法是将该方法的实现复制到您的代码中,而不是调用该方法。

于 2013-09-17T19:14:01.403 回答
-2

问题是您self在调用时忘记了第 3 行中的参数GetFollowerIDs

class MyApi(twitter.Api):
    def GetFollowerIDs(self, *args, **kwargs):
        super(MyApi, self).GetFollowerIDs(self,*args, **kwargs)

        print result
        print next_cursor
于 2013-09-17T19:12:02.687 回答