Python类函数不返回变量
我想我可能忽略了一些简单的事情。我有一个定义了构造函数的类。在其中一个函数中,我调用api并将响应存储在变量中。我想返回那个变量。有点像,info=MyClass(),data=info.somefunctuon()。在我的例子中,数据总是不返回任何值 这里是我所拥有的一个片段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=''):
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