python繫結方法

2021-08-07 11:44:04 字數 1147 閱讀 2919

首先要明確的一點是:繫結方法和非繫結方法在建立時沒有任何區別,同乙個方法,既可以為繫結方法,也可以為非繫結方法,一切不同都只在呼叫時的手法上有所區別。

繫結方法即該方法繫結類的乙個例項上,必須將 self 作為第乙個引數傳入,而這個過程是由 python 自動完成的。所以可以通過例項名.方法名(引數列表)來進行呼叫。

而非繫結方法因為不繫結到例項上,所以在引用時是通過類來進行引用。自然的,該過程不是 python 自動完成,如果忘記傳入例項,那麼直接呼叫是肯定會出問題的。所以要呼叫類的非繫結方法時應該顯示地提供乙個例項作為第乙個引數。使用類名.非繫結方法名(引數列表)的形式來進行引用。

具體來說,除開靜態類,其他類的繫結方法定義時都需要制定 self 作為第乙個引數,而呼叫時自動由 python 將方法繫結到例項上。

talk is week, let me show you my code:

class test:

… def func(self, message):

… print message

… object1=test()

x=object1.func

x(『abc』)

abc

t=test.func

t(object1,』abc』)

abc

上面的示例**摘自網路。從示例中我們可以看出,x=object1.func 其實是將 object1 例項的func 方法位址與變數名 x 構成了對映關係,在呼叫 x(『abc』) 時,其實就是在呼叫object1.func(『abc』),這個時候原本的類方法 func(self, message) 的引數列表中,self 已經由 python 自動關聯到了object1 這個例項上,所以,我們在呼叫時只需要單純傳入 message 就可以了。

但是對於 t=test.func 來說,變數名 t 是關聯到了類 test 的func 方法的位址上,所以在呼叫t(object1, 『abc』) 時,必須顯式的將例項名與 self 關聯,否則將會報出」typeerror: unbound method func() must be called with test instance as first argument (got str instance instead)」 的錯誤。

python 繫結方法和非繫結方法

類中定義的方法大致可以分為兩類 繫結方法和非繫結方法。其中繫結方法又可以分為繫結到物件的方法和繫結到類的方法。一 繫結方法 1.1 物件的繫結方法 在類中沒有被任何裝飾器修飾的方法就是 繫結到物件的方法,這類方法專門為物件定製。class person country china def init ...

Python教程 繫結方法與非繫結方法

一 繫結方法 1.物件的繫結方法 首先我們明確乙個知識點,凡是類中的方法或函式,預設情況下都是繫結給物件使用的。下面,我們通過例項,來慢慢解析繫結方法的應用。class people def init self,name,age self.name name self.age age deftalk...

python之繫結方法

在類的內部定義的方法基本分為兩大類 1.繫結方法 繫結到物件的方法 在類內部定義的,且沒有被任何裝飾器修飾的方法 繫結給誰,就該由誰呼叫。把呼叫者當做第乙個引數自動傳入 繫結到類的方法 在類內部定義的,被裝飾器 classmathod修飾的方法 2.非繫結方法 不與類或者物件繫結的方法 繫結到物件的...