接觸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...