1. 程式人生 > 實用技巧 >python中的self含義

python中的self含義

原文摘自

class A:
pass

a = A()

a是A的一個例項物件;

執行:
A.foo = lambda x : x + 1
A.foo(1)
輸出:
2
---------
然後執行:
a.foo(1)
會直接報錯.

上面執行"a.foo(1)"語句時有個報錯,說只需要一個引數,但是給了兩個引數,這第二個引數是怎麼來的,為什麼A.foo(1)就不會出錯。這裡我們可以引出python類中的方法函式,方法函式指的是通過類的例項化物件呼叫的函式,方法函式的第一個形參表示類的例項化物件,通常寫成self。執行a.foo(1)時就相當於執行A.foo(a,1),因為A.foo()中只有一個形參,傳入的引數多於需要的引數,所以發生型別錯誤。--來自原文在文章head可查

改進:::我們在A的定義中重新定義foo:

class A:
def foo(self,n):
print(n+1)
a = A()

現在我們在a中呼叫foo就不會有問題了:

執行:
a.foo(1)

我們也可以試試呼叫A.foo:

執行:
A.foo(a,1)

總結

python的類中定義函式時的self關鍵字跟python的方法函式有關,方法函式由類的例項化物件呼叫,需要把呼叫它的例項化物件傳入方法函式中,self即是表示例項化物件的形參。