像函式一樣,python中的類方法也是一種物件。由於既可以通過例項也可以通過類來訪問方法,所以在python裡有兩種風格:
未繫結的類方法:沒有self
通過類來引用方法返回乙個未繫結方法物件。要呼叫它,你必須顯示地提供乙個例項作為第乙個引數。
繫結的例項方法:有self
通過例項訪問方法返回乙個繫結的方法物件。
python自動地給方法繫結乙個例項,所以我們呼叫它時不用再傳乙個例項引數。
兩種方法都是物件,它們可以被傳遞、存入列表等待。
兩者執行時都需要乙個例項作為第一引數(妤乙個self值),但當通過乙個例項呼叫乙個繫結方法時python自動會提供乙個。例如我們執行如下的**:
class test:
def func(self,message):
print message
object1=test()
x=object1.func
x('繫結方法物件,例項是隱含的')
t=test.func
t(object1,'未繫結的方法物件,需要傳遞乙個例項')
#t('未繫結的方法物件,需要傳遞乙個例項') #錯誤的呼叫
object1=test()生成乙個例項,object1.func返回乙個繫結的方法,把例項object1和方法func繫結。
而test.func是用類去引用方法,我們得到乙個未繫結的方法物件。要呼叫它就得傳乙個例項引數,如t(object1,'未繫結的方法物件,需要傳遞乙個例項') 。
大多數時候,我們都直接呼叫方法,所以一般不會注意到方法物件。但是如果開始寫通用的呼叫物件的**時,需要特別仔細地注意未繫結方法,它們需要地傳乙個例項引數
Python中繫結與未繫結的類方法
像函式一樣,python中的類方法也是一種物件。由於既可以通過例項也可以通過類來訪問方法,所以在python裡有兩種風格 未繫結的類方法 沒有self 通過類來引用方法返回乙個未繫結方法物件。要呼叫它,你必須顯示地提供乙個例項作為第乙個引數。繫結的例項方法 有self 通過例項訪問方法返回乙個繫結的...
python繫結方法,未繫結,可呼叫物件型別
函式物件,方法物件,繫結,未繫結 自省 python中的可呼叫物件型別 無論函式還是方法都是物件 未繫結 class.method 沒有self 繫結 object.method 自動傳入self 3.0後 未繫結的函式 方法 就是乙個普通函式 class testclass def method ...
Python教程 繫結方法與非繫結方法
一 繫結方法 1.物件的繫結方法 首先我們明確乙個知識點,凡是類中的方法或函式,預設情況下都是繫結給物件使用的。下面,我們通過例項,來慢慢解析繫結方法的應用。class people def init self,name,age self.name name self.age age deftalk...