python對象方法

| | | | | | | | | | | | | | | |

Python 方法中的 參數 必須在括號中指定。這是因為函數和方法使用括號來指示它們是否被調用。如果您使用方括號調用方法,您會遇到“TypeError: `method` object is notsubscriptable” 錯誤。

在本指南中,我們將解釋此錯誤的含義以及您可能會遇到的原因遇到它。讓我們看一個此錯誤的示例,以幫助您開發解決方案。

TypeError: `method` the object is not subscribed

可訂閱對象 是具有 __getitem__ 方法的對象。這些是數據類型,例如列表、字典和元組。 __getitem__ 方法允許 Python 解釋器從集合中檢索單個項目。

並非所有項目都被訂閱。例如,方法不是。這是因為他們沒有實現 __getitem__ 方法。這意味著您不能使用方括號語法來訪問方法的元素或調用方法。

請考慮以下代碼片段:

此代碼返回“Edam”,即索引 0 位置的奶酪。您不能使用方括號來調用函數或方法,因為函數和方法不是您可以訂閱的對象。

一個示例場景

這裡我們創建了一個將奶酪存儲在對像中的程序。 "Cheese," 我們用來定義奶酪的類將有一個方法可以讓我們檢查奶酪是否來自特定的原產國。

為我們的奶酪定義一個類 。我們稱這個類為 Cheese:

我們的類包含兩個方法,第一個方法定義了Cheese對象的結構。第二個允許檢查奶酪的原產國是否等於某個值。< br>

然後,讓我們從 Cheese 類創建一個對象:

變量“edam”是一個對象。與奶酪相關的名稱是 Edam,其原產國是荷蘭。

接下來,我們調用 get_country () 方法:

這段代碼執行get_country() 方法。 get_country ( ) 檢查“edam”對像中“origin”的值是否等於“Germany”。

運行我們的代碼,看看會發生什麼發生:

我們的代碼出現錯誤。

我們分析一下Python 調試器識別為不正確的代碼:

在這行代碼中,我們使用方括號來調用get_country()方法。這不是可接受的語法,因為方括號用於訪問列表中的項目。由於 函數 和對像沒有被訂閱,我們不能使用方括號來調用它們。

要糾正這個錯誤,我們需要用大括號替換括號:

讓我們運行我們的代碼,看看會發生什麼:

我們的代碼運行良好。讓我們嘗試檢查 Edam 是否來自“荷蘭”,以確保我們的函數在所有情況下都有效,無論我們指定的值是否與奶酪的原產國相同:

我們的代碼返回:

如果我們指定的值等於奶酪的原產國,我們的代碼就可以工作。

結論

使用方括號調用類中的方法會產生“TypeError: `method` not subscribable”錯誤。要解決此錯誤,請確保僅在要調用的方法名稱後使用大括號調用類的方法。

您現在已準備好將這個常見的 Python 錯誤解決為一個專業程序員