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

2021-08-30 11:23:28 字數 1350 閱讀 2319

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

--eof--

python類中函式呼叫要加self

物件呼叫方法時,實際上是通過類呼叫的a muffedcalculator a.calc expr 實際上是這樣呼叫的 muffledcalculator.calc a,expr 這樣self 就是 a,python隱含地把a 傳進方法 替代了self,就成了繫結的方法,就可以執行了.否則就是非繫結方...

Python類中的方法

1 普通方法 class myclass a example class i 12345 def f1 c return str c hello world def f2 return hehe m myclass print m.f1 輸出 main myclass object at 0x076...

Python 中的類方法

需要用 classmethod 來標識 對於類方法 第乙個引數必須是類物件 一般以 cls 作為第乙個引數 能夠通過例項物件和類物件去訪問 類方法還可以用來修改屬性 代表的是當前類相關的資訊的物件 類本身也是乙個物件,有的地方也稱之為類的元資料物件 主要用來存放邏輯性的 主要是一些邏輯屬於類 但是和...