Python类函数不返回变量

Python类函数不返回变量,python,mechanize,Python,Mechanize,我想我可能忽略了一些简单的事情。我有一个定义了构造函数的类。在其中一个函数中,我调用api并将响应存储在变量中。我想返回那个变量。有点像,info=MyClass(),data=info.somefunctuon()。在我的例子中,数据总是不返回任何值 这里是我所拥有的一个片段 class SomeAPI(object): def __init__(self, br, cj, username, password, logged_in='', api_id='', data=''):

我想我可能忽略了一些简单的事情。我有一个定义了构造函数的类。在其中一个函数中,我调用api并将响应存储在变量中。我想返回那个变量。有点像,info=MyClass(),data=info.somefunctuon()。在我的例子中,数据总是不返回任何值

这里是我所拥有的一个片段

class SomeAPI(object):

    def __init__(self, br, cj, username, password, logged_in='', api_id='', data=''):
        self.br = br
        self.cj = cj
        self.logged_in = False
        self.username = username
        self.password = password
        self.api_id = api_id
        br.set_cookiejar(self.cj)
        br.set_handle_robots(False)

    def _login_check(f):
        @wraps(f)
        def wrapper(self):
            if self.log_in():
                f(self)
            else:
                raise MyError('Not Logged In')
        return wrapper

    def log_in(self):
        auth_data = {'cmd': 'auth', 'params': {'username': self.username,
                                               'password': self.password}}
        if not self.logged_in:
            self.br.open('https://someurl.com/auth', dumps(auth_data))

            data = loads(self.br.response().read())
            status = data['response']['status']

            if status == 'OK':
                api_id = data['response']['api_id']
                self.logged_in = True
                self.api_id = api_id
            else:
                raise MyError(status)
        return self.logged_in

    @_login_check
    def campaigns_list(self):
        campaigns_list_data = {'cmd': 'ab_campaigns'}

        raw = self.br.open('https://someurl.com/{}'.format(self.api_id),
                                                    dumps(campaigns_list_data))
        json_resp = raw.read()
        resp = loads(json_resp)
        status = resp['response']['status']

        if status == 'OK':
            data = resp['response']['Ad Campaigns']
            return data
当我这样做时:

info = SomeAPI(mechanize.Browser(), cookielib.LWPCookieJar(), 'MyName', '12345')
data = info.campaigns_list() 
print data
我总是一无所获。我知道我得到了数据,因为当我用print替换return时,我得到了预期的响应。我想也许我需要在构造函数上定义数据,但是我的类的每个函数都需要定义自己的变量。我想它会变得一团糟


有什么建议请告诉我。谢谢大家!

您的decorator
\u login\u check
调用它包装的函数,但它不会返回函数返回的任何内容

更改:

def _login_check(f):
    @wraps(f)
    def wrapper(self):
        if self.log_in():
            f(self)
        else:
            raise MyError('Not Logged In')
    return wrapper
致:


可能您访问的特定结果不正确-当您将其放置在
而不是
返回时,添加有关
打印
显示内容的信息。如果状态不是“OK”,该怎么办?在所有这些情况下,您的函数返回的值都将是None。很好!这就成功了。我知道我忽略了什么。除了看我做的装饰外,我什么都试过了。再次感谢
def _login_check(f):
    @wraps(f)
    def wrapper(self):
        if self.log_in():
            return f(self)
        else:
            raise MyError('Not Logged In')
    return wrapper