python的類的方法和普通的函式有乙個很明顯的區別,在類的方法必須有個額外的第乙個引數
(self
),但在呼叫這個方法的時候不必為這個引數賦值
(顯勝於隱
的引發)。python的類的方法的這個特別的引數指代的是物件本身,而按照python的慣例,它用self來表示。(當然我們也可以用其他任何名稱來代替,只是規範和標準在那建議我們一致使用self)
例子說明:建立了乙個類myclass,例項化myclass得到了myobject這個物件,然後呼叫這個物件的方法myobject.method(arg1,arg2)
,這個過程中,python會自動轉為myclass.mehod(myobject,arg1,arg2)
這就是python的self的原理了。即使你的類的方法不需要任何引數,但還是得給這個方法定義乙個self引數,雖然我們在例項化呼叫的時候不用理會這個引數不用給它賦值。
例項:
classpython:
def selfdemo(self):
print 'python,why
self?'
p =python()
p.輸出:python,why self?selfdemo()
把p.selfdemo()帶個引數如:p.selfdemo(p),得到同樣的輸出結果
如果把self去掉的話,
classpython:
def selfdemo():
print 'python,why
self?'
p =python()
p.這樣就報錯了:typeerror: selfdemo() takes no arguments (1 given)selfdemo()
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 作為第乙個引數 能夠通過例項物件和類物件去訪問 類方法還可以用來修改屬性 代表的是當前類相關的資訊的物件 類本身也是乙個物件,有的地方也稱之為類的元資料物件 主要用來存放邏輯性的 主要是一些邏輯屬於類 但是和...