Flask项目中Python类方法调用返回<function ...>,请求排查原因
问题排查与解决:返回函数对象而非API调用结果
问题根源
- 未正确实例化类:
testObj = sportsOdds只是将类本身赋值给变量,没有创建类的实例,无法通过实例调用方法。 - 直接引用方法对象而非调用方法:
pp(sportsOdds.getFootballOdds)是打印类的方法对象本身,而非执行方法并输出API返回结果(方法调用必须加括号())。
修正后的代码
from dataclasses import dataclass import json import requests from requests import Session from pprint import pprint as pp import string class sportsOdds: def __init__(self): self.apiurl = 'https://api.the-odds-api.com' self.session = Session() def getSports(self): url = self.apiurl + '/v4/sports/?apiKey=REDACTED' r = self.session.get(url) print(r.status_code) print(r.json()) def getFootballOdds(self): url = self.apiurl + '/v4/sports/americanfootball_nfl/odds/' params = { 'api_key': 'REDACTED', 'regions': 'us', 'markets': 'spreads', 'oddsFormat': 'american', 'bookmakers': 'draftkings' } # 复用类初始化的session,保持会话一致性 r = self.session.get(url, params) data = r.json() return data # 返回数据而非直接打印,适配Flask Web场景 # 正确实例化类 testObj = sportsOdds() # 调用方法并打印API返回结果 pp(testObj.getFootballOdds())
额外优化提示
- 将
getFootballOdds中的print(data)改为return data,方便在Flask中直接将数据作为HTTP响应返回,更贴合Web应用逻辑。 - 统一使用类内初始化的
self.session发起请求,替代单独的requests.get,复用会话连接,提升请求效率。
内容的提问来源于stack exchange,提问作者jake
相关产品推荐
相关产品推荐

