標籤:

Python中self參數是什麼?


python的 self參數


指向和instance綁定名字空間的指針


在python中,class的method至少需要一個參數,其中第一個參數會在調用時被自動賦值,指向調用對象本身,類似java中的this。看下面:

方法printSelf()在定義時沒有參數,可是在調用時出現錯誤:

TypeError: printSelf() takes 0 positional arguments but 1 was given

這說明在調用方法時有一個參數被賦值進去了。這個賦值就是 s對象本身。如果我們在定義方法加一個參數就好了:

為什麼要給一個參數呢,作者覺得顯式指定更加易懂?

PEP 20 -- The Zen of Python


類方法需要添加self而普通方法不需要,可以通過類或者它的實例來調用這些方法。self代表的是類的實例而不是類。


在類中有時候需要訪問類中自己變數和方法,而類中方法有作用域範圍,調用自己的話就可以訪問這些變數方法,使類的功能強大。

感覺上來說python類有點特殊,設計的還是好理解的,但是比其他語言的oop差了點東西,不過也是有他特色的metaclass等等的


首先,MATLAB的類成員方法聲明也要這樣寫的,即首個形參得是對象自己,只不過並不要求是哪個關鍵字,而是構造函數返回的標識符即可。

其次,C++在調用成員方法時把調用對象的地址隱式地傳給了this指針,所以也是把對象自己傳過去了。

調用成員方法時把對象傳值過去,在OOP語言里是通行的做法,在不同語言里體現不一樣而已。


推薦閱讀:

Pandas 練習
最受歡迎的7款Python開源框架總結,忍不住收藏了~
到底都是誰在用python
35個編程語言/技術方向入門教程,裡邊兒請!
馬克的Python學習筆記#文件和I/O 3

TAG:Python |