學(xué)習(xí)flask過程中,遇到一個奇怪的問題,可能是自己學(xué)藝不精吧,希望高手指正
# 視圖函數(shù)
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會被轉(zhuǎn)化為字典 這里沒有傳遞第二個參數(shù),就會采用默認的
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'我這里第二個參數(shù)不設(shè)置的話應(yīng)該自動套用 我設(shè)置的默認參數(shù)return_json = True,這個是什么緣故呢?謝謝指正
4 回答

回首憶惘然
TA貢獻1847條經(jīng)驗 獲得超11個贊
def search_by_isbn(cls,isbn):
url = cls.isbn_url.format(isbn)
print(locals())
result = HTTP.get(url)
print(locals())
return result # 這里產(chǎn)生的是dict,需要解析成json返回,某則不能讀取
折騰了好幾天的問題,還是敗在了基礎(chǔ)薄弱上,謝謝大家的耐心解答讓我理清了思路,謝謝
綜合前面幾個高手的結(jié)論,我發(fā)現(xiàn)了自己的問題,所以投票還是給自己吧.........免得得罪人

翻過高山走不出你
TA貢獻1875條經(jīng)驗 獲得超3個贊
你的 HTTP 類中的函數(shù)使用了靜態(tài)函數(shù)的裝飾器,那么你的 get() 函數(shù)里的參數(shù),有一個 self,這個參數(shù)是需要你自己輸入。你單獨調(diào)用了url,那么調(diào)用的過程就是 get(self=url, url, return_json = True),所以會報錯,缺少url的賦值

滄海一幻覺
TA貢獻1824條經(jīng)驗 獲得超5個贊
HTTP類中g(shù)et方法是靜態(tài)方法,不需要self參數(shù)
class HTTP:
@staticmethod
def get(url, return_json = True): # 沒有self參數(shù)
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
提交
取消