Python要self的理由

2021-08-15 03:56:59 字數 1279 閱讀 7327

接觸python以來,看到類裡的函式要帶個self引數,一直搞不懂啥麻子原因。晚上特別針對python的self查了一下,理理。

python的類的方法和普通的函式有乙個很明顯的區別,在類的方法必須有個額外的第乙個引數

(self

),但在呼叫這個方法的時候不必為這個引數賦值

(顯勝於隱

的引發)。python的類的方法的這個特別的引數指代的是物件本身,而按照python的慣例,它用self來表示。(當然我們也可以用其他任何名稱來代替,只是規範和標準在那建議我們一致使用self)

例子說明:建立了乙個類myclass,例項化myclass得到了myobject這個物件,然後呼叫這個物件的方法myobject.method(arg1,arg2)

,這個過程中,python會自動轉為myclass.mehod(myobject,arg1,arg2)

這就是python的self的原理了。即使你的類的方法不需要任何引數,但還是得給這個方法定義乙個self引數,雖然我們在例項化呼叫的時候不用理會這個引數不用給它賦值。

例項:

class python:
def selfdemo(self):

print 'python,why self?'
p = python()
p.selfdemo()

輸出:python,why self?

把p.selfdemo()帶個引數如:p.selfdemo(p),得到同樣的輸出結果

如果把self去掉的話,

class python:
def selfdemo():

print 'python,why self?'
p = python()
p.selfdemo()

這樣就報錯了:typeerror: selfdemo() takes no arguments (1 given)

self在python裡不是關鍵字。self代表當前物件的位址。self能避免非限定呼叫造成的全域性變數。

在python3之後不知道將self隱了沒?感覺在python類裡的方法都要帶個self這樣有點死板

Python要self的理由

python的類的方法和普通的函式有乙個很明顯的區別,在類的方法必須有個額外的第乙個引數 self 但在呼叫這個方法的時候不必為這個引數賦值 顯勝於隱 的引發 python的類的方法的這個特別的引數指代的是物件本身,而按照python的慣例,它用self來表示。當然我們也可以用其他任何名稱來代替,只...

Python類中的方法要加self的理由

python的類的方法和普通的函式有乙個很明顯的區別,在類的方法必須有個額外的第乙個引數 self 但在呼叫這個方法的時候不必為這個引數賦值 顯勝於隱 的引發 python的類的方法的這個特別的引數指代的是物件本身,而按照python的慣例,它用self來表示。當然我們也可以用其他任何名稱來代替,只...

Python 為什麼要self

接觸python以來,看到類裡的函式要帶個self引數,一直搞不懂啥麻子原因。晚上特別針對python的self查了一下,理理。python的類的方法和普通的函式有乙個很明顯的區別,在類的方法必須有個額外的第乙個引數 self 但在呼叫這個方法的時候不必為這個引數賦值 顯勝於隱 的引發 python...