問題:
當對函數傳遞形參時,或者函數返回值是某個對象時,直接使用發現無法自動補全其自己攜帶的方法,這樣會非常降低開發效率
eg:
def get_verify_code(self, session):# 這個session是一個對象,當在函數中使用的時候,無法自動補全其攜帶的方法 2 """ 3 4 :param session: 傳遞進來session對象 5 :return: 返回的是響應response 6 """ 7 return session.get(self.verify_url) 8 9 def test01_logoin(self): 10 response = self.login_api.get_verify_code() 11 self.assertEqual("image/png", response.headers)# 這種情況就不會補全,我們獲取了上一個函數的返回值,返回值是一個response對象,但是pycharm無法識別 12 self.assertEqual(200, response.status_code)
解決辦法一:
直接上圖:----用添加type hints(類型提示)來解決
那么上段代碼添加類型提示的步驟如下:
def get_verify_code(self, session):# 1、將光標放在session處 2、點擊Alt+Enter 3、選擇specify type for the reference using annotation ... 4、按Enter后輸入類型 2 """ 3 4 :param session: 傳遞進來session對象 5 :return: 返回的是響應response 6 """ 7 return session.get(self.verify_url) 8 9 def test01_logoin(self): 10 response = self.login_api.get_verify_code()#1、將光標放在此處 2、點擊Alt+Enter 3、選擇Add hint for... 4、按Enter后輸入類型
# 給函數的返回值添加類型提示時 會自動跳轉到原函數進行添加
self.assertEqual("image/png", response.headers) 12 self.assertEqual(200, response.status_code)
eg:添加類型提示后的代碼如下:
1 def get_verify_code(self, session: requests.Session) -> requests.Response: # 這樣代碼就可以自動補全了,調用其返回函數就可以補全 2 """ 3 :param session: 傳遞進來session對象 4 :return: 返回的是響應response 5 """ 6 return session.get(self.verify_url) 7 8 def test01_logoin(self): 9 response = self.login_api.get_verify_code() 10 self.assertEqual("image/png", response.headers) 11 self.assertEqual(200, response.status_code)
解決辦法二(推薦):
在函數的注釋中給形參添加類型提示1 def get_verify_code(self, session) -> requests.Response:
2 """ 3 類型提示 可以讓其自動補全 4 :type session: requests.Session 5 :param session: 傳遞進來session對象 6 :return: 返回的是響應response
:rtype: requests.Response
7 """ 8 return session.get(self.verify_url)
解決辦法三:
直接在后面添加 類型提示也是可以的但是沒有上面的方法快捷,只需在原函數添加一次,以后每次調用都可以補全
1 def get_verify_code(self, session: requests.Session): # 這樣代碼就可以自動補全了,調用其返回函數就可以補全 2 2 """ 3 3 :param session: 傳遞進來session對象 4 4 :return: 返回的是響應response 5 5 """ 6 6 return session.get(self.verify_url) 7 7 8 8 def test01_logoin(self): 9 9 response = self.login_api.get_verify_code() #type: requests.Response 10 10 self.assertEqual("image/png", response.headers) 11 11 self.assertEqual(200, response.status_code)
請參考python中文網的type hints 類型提示解析:
https://www.pycharm.net.cn/docs/302.html