学习flask过程中,遇到一个奇怪的问题,可能是自己学艺不精吧,希望高手指正
# 视图函数
class ShuBook:
isbn_url = 'http://t.yushu.im/v2/book/isbn/{}'
keyword_url = 'http://t.yushu.im/v2/book/search?q={}&count={}&start={}'
@classmethod
def search_by_isbn(cls,isbn):
url = cls.isbn_url.format(isbn)
print(locals())
result = HTTP.get(url) # result是dict格式的 json会被转化为字典 这里没有传递第二个参数,就会采用默认的
print(locals()) #------------------------
return result
@classmethod
def search_by_keyword(cls,keyword,count=15,start=0):
url = cls.keyword_url.format(keyword,count,start)
result = HTTP.get(url)
return result
# 自己的HTTP模块
import requests
class HTTP:
@staticmethod
def get(self, url, return_json = True):
r = requests.get(url)
# restful API
# json
if r.status_code != 200:
return {} if return_json else ''
return r.json() if return_json else r.text
程序提示错误get() missing 1 required positional argument: 'url'我这里第二个参数不设置的话应该自动套用 我设置的默认参数return_json = True,这个是什么缘故呢?谢谢指正
4 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
def search_by_isbn(cls,isbn):
url = cls.isbn_url.format(isbn)
print(locals())
result = HTTP.get(url)
print(locals())
return result # 这里产生的是dict,需要解析成json返回,某则不能读取
折腾了好几天的问题,还是败在了基础薄弱上,谢谢大家的耐心解答让我理清了思路,谢谢
综合前面几个高手的结论,我发现了自己的问题,所以投票还是给自己吧.........免得得罪人
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
你的 HTTP 类中的函数使用了静态函数的装饰器,那么你的 get() 函数里的参数,有一个 self,这个参数是需要你自己输入。你单独调用了url,那么调用的过程就是 get(self=url, url, return_json = True),所以会报错,缺少url的赋值
沧海一幻觉
TA贡献1824条经验 获得超5个赞
HTTP类中get方法是静态方法,不需要self参数
class HTTP:
@staticmethod
def get(url, return_json = True): # 没有self参数
r = requests.get(url)
# restful API
# json
if r.status_code != 200:
return {} if return_json else ''
return r.json() if return_json else r.text
添加回答
举报
0/150
提交
取消