使用的IDE是PyCharm。請看如下代碼:
from requests_html import HTMLSession, HTMLResponse
session = HTMLSession()
response = session.get('http://www.baidu.com')
print(response.html.links)
PyCharm會將第4行陳述句的“html”標黃,說明PyCharm認為response物件沒有html欄位。滑鼠移到get()方法上查看方法簽名,發現回傳型別是Response,而Response類確實沒有html欄位。
但是代碼是可以運行的,這說明response物件實際上有html欄位。于是猜測response實際上是requests_html.HTMLResponse型別。將第3行代碼改為:
response: HTMLResponse = session.get('http://www.baidu.com')第4行代碼中的“html”不再是黃色,但第3行的“session.get('http://www.baidu.com')”又變成了黃色,說明PyCharm認為HTMLSession.get()的回傳型別和response的型別不匹配。
看了一圈源代碼,HTMLSession類沒有自行定義get()方法,它間接繼承了requests.Session類,get()方法也是從Session類繼承來的。可為什么Session.get()的回傳型別是Response,而HTMLSession.get()的實際回傳型別卻是HTMLResponse?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/191145.html
