Python中self參數是什麼?
09-23
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 |