Python為什麼要self

2021-07-03 17:13:16 字數 1301 閱讀 2647

標籤:

關鍵字python

self

接觸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這樣有點死板

sjolzy

|  google+

--eof--

Python 為什麼要self

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

Python為什麼要self

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

Python中為什麼要用self?

參考文章 self的含義與基本用法 python中為什麼要使用self 注意到文章中的一句話,避免非限定呼叫造成的全域性變數。舉個例子來談談我對這句話的理解 class father def init self,name self.name name def selfdemo self print ...