python中的self含義
阿新 • • 發佈:2020-09-22
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)
總結