亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

警告:預期類型 [Class Name],改為 'Dict[str, int]'

警告:預期類型 [Class Name],改為 'Dict[str, int]'

喵喔喔 2022-06-22 15:35:05
我正在使用將字典作為輸入的方法構建一個類,但 Pycharm 會顯示警告。''' 預期類型 'TestClass',得到 'Dict[str, int]' 而不是 less... (?F1) 檢查信息:此檢查檢測函數調用表達式中的類型錯誤。由于動態調度和鴨子類型,這在有限但有用的情況下是可能的。函數參數的類型可以在文檔字符串或 Python 3 函數注釋中指定 '''class TestClass:    def __getitem__(self, index):        return self[index]    def get_keys(self):        return list(self.keys())dict_input = {'a':123, 'b':456}TestClass.get_keys(dict_input)所以我在這里收到警告:TestClass.get_keys(dict_input)這個警告是什么意思,修復它的方法是什么?
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

諸如您編寫的方法稱為“實例方法”。


self,接收者,應該是一個實例TestClass(否則,許多事情可能會出錯,例如super)。


您可以定義get_keys為靜態方法,或使用簡單函數(不將其放入類中)。


class TestClass:

    @staticmethod

    def get_keys(s):

        return list(s.keys())

您可能需要閱讀有關類的 Python 文檔以獲取更多詳細信息。


查看完整回答
反對 回復 2022-06-22
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

為了具體回答您關于 Pycharm 警告的問題,您當前遇到的警告是由 Pycharm 檢查代碼中的類型引起的已知問題,因為 PyCharm 很困惑,因為它需要一個 TestClass 對象,但得到一個字典對象。

解決此問題的一種方法是禁用該特定警告類型,如從此處解釋的那樣

  1. 轉到設置/首選項

  2. 在邊欄中,單擊檢查

  3. 展開 Python 選項卡

  4. 向下滾動Incorrect Call Arguments并取消選中它

  5. 如果這不起作用,您可以取消選中Type Checker。


另一個更優雅的方法,雖然我不確定它是否會解決這個 PyCharm 警告,但是在你的函數中添加一個裝飾器,讓 PyCharm 知道你的返回類型是一個字典。教程在這里,但您的文檔字符串可能會包含以下內容:

"""
:rtype: Dict [str,int]
"""

順便說一句,您可能應該在 get_keys 函數上使用@staticmethod裝飾器,正如 Jean 所提到的,因為它接收一個對象并返回其鍵(并且我們不希望該對象在此過程中訪問我們的 TestClass 數據)。


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號