2017-01-05 155 views
-4

是否有方法通過變量名稱定義類型提示?從變量名稱到類型提示

例子:

每次我的名字在我的代碼的變量response,我希望它有一個類型提示django.http.HttpResponse

我的用例是對類似PyCharm的IDE進行類型提示。到目前爲止,我沒有用例在運行時評估它。

我想有一般(而不是pycharm具體)解決方案。

我想避免一遍又一遍地做手動式的暗示。

請告訴我爲什麼您對此問題投下了贊成票。我很好奇,樂於學習。

+0

@MooingRawr我在發佈之前閱讀了您提供的鏈接。我不明白這可以幫助我。我不想一次又一次地做明確的類型暗示。 – guettli

+0

我不認爲將變量名稱連接到某種類型是不錯的做法。只要你定義了它,就可以使用註釋來定義它的類型,以使其更明確,而不是將其定義在可見代碼之外的某處 – Alex

+0

@Alex我儘量避免過時的註釋。這個評論是什麼意思?它告訴我這個叫做「迴應」的東西是......驚喜,驚喜......它告訴我這是一個迴應。是的,好消息!我喜歡「乾淨的代碼」和「乾淨的編碼器」的作者指南:http://www.informit.com/articles/article.aspx?p=1326509 – guettli

回答

0

添加類型標註到返回的HttpResponse

Python中的變量需要聲明的所有方法。它得到的是一個lvalue創建(我的定義,也許有更好的方式來描述這個)

response=handle_request(request) 

如果handle_request()有類型註釋,那麼就沒有必要做類型標註爲response

這並不直接回答問題,而是解決了問題背後的問題。

此答案基於用戶Alex的評論。謝謝:-)

+0

這是我的首選答案,但我需要等到明天才能接受它。 – guettli

0

添加類型註釋的response

def test_foo(): 
    response: django.http.HttpRequest 
    response=handle_request(request) 

所有第一用法見https://www.python.org/dev/peps/pep-0526/

其缺點是response: django.http.HttpRequest需要在範圍內的每個第一次使用前付諸表決。據我所知是沒有辦法通過自動生成的存根文件到每個模塊級別只定義一次這個

0

添加類型提示

您可以自動生成創建stub files(與.pyi擴展名)包含類型提示爲源碼。

我想這個自動生成並不難實現。

這有利於所謂的「類型的註釋添加到響應的所有第一次運用」的答案,認爲源代碼不包含在同一行(response: django.http.HttpRequest)幾次

缺點:您需要一個建設 - 步驟來創建存根文件。