1. 程式人生 > >Python中self的用法詳解,或者總是提示:TypeError: add() missing 1 required positional argument: 'self'的問題解決

Python中self的用法詳解,或者總是提示:TypeError: add() missing 1 required positional argument: 'self'的問題解決

最近在學習Python的過程中一直髮現一個問題,就是在從網上看別人寫的一些例項或者一些開源專案的時候,發現一個問題。在呼叫一個類或者一個類方法的時候,總是提示缺少傳遞的引數。自己寫了一個簡單的類似問題,如下:

class Add():

    def add(self):
        return None

if __name__ == '__main__':

    print(Add.add())

這個時候其實我們將add(self)中的self刪除後,發現系統報錯了

這個時候繼續修改,改為add(str1),然後呼叫的時候給他傳遞一個字串,也是沒問題的

其實這種寫法是存在問題的,首先print(Add.add('aaa')),其實這個類並沒有例項化,我們在用的時候應該寫成print(Add().add('aaa')),然後繼續修改為print(Add().add('aaa')),修改後執行發現又報錯了

提示需要一個但是傳遞了兩個引數,因為def add(str1)就等同於def add(self),而self又代表他本身的例項。但是在呼叫的時候add(‘aaa’)又給他傳了一個引數,等同於add(‘self’,‘aaa’)所以也會報錯。然後繼續修改,完全正確的寫法。

所以總結:在我們定義函式和類的時候,在第一個引數的位置預設應該新增self,例如add(self,str,str1),然後我們在呼叫的時候應該首先例項化這個類,如Add().add('aaa'),而非直接呼叫Add.add('aaa')。