在面向對象的編程中,已知類屬性可細分為類屬性和實例屬性一樣,同樣的,對於類中的方法也可以具體可劃分為
類方法、實例方法和靜態方法!本文將通過代碼演示對這三種方法做將詳細介紹!Python實例方法
在類編程中,一般情況下在類中定義的方法/函數默認都是實例方法。我們以下圖中的代碼來詳細說明:
python的類編程中實例方法最大的特點就是最少要包含一個 self 參數,該self參數的作用是綁定調用此方法的實例對象,如上述代碼中的self參數便是指向實例myhouse,類比C++中的this指針。
此外,實例方法除了能夠被實例本身調用外,還能夠通過類名直接調用,但需要指定調用的實例對象,如上述代碼中通過類名調用實例myhouse的testfunc()方法:
#self參數綁定為對象myhouse
house.testfunc(myhouse,"類名調用實例方法")
Python類方法
Python 中的類方法和實例方法類似,但類方法需要滿足以下要求:
- 類方法至少需要包含一個參數,與實例方法不同的是該參數並非self,而是python程序員約定俗成的參數:cls。
- Python 會自動將類本身綁定到 cls參數(非類對象),故在調用類方法時,無需顯式為 cls 參數傳遞參數。
- 類方法需要使用修飾語句: @classmethod
我們以下圖代碼來詳細說明:
根據打印結果顯而易見類方法fly()即使通過實例對象b調用,其調用者也依然是
__main__.bird,而不是對象b。
Python類靜態方法
類中的靜態方法,實際上就是大家眾所周知的普通函數,存在的唯一區別是:
類靜態方在類命名空間中定義,而函數則在程序的全局命名空間中定義。
需要注意的是:
- 類靜態方法沒有 self、cls 這樣的特殊參數,故 Python 解釋器不會對其包含的參數做任何類或對象的綁定。
- 類靜態方法中無法調用任何類和對象的屬性和方法,類靜態方法與類的關係不大。
我們以下圖代碼來詳細說明:
一個問題:如果放開上圖中註釋掉的代碼print(self.name),會出現什麼情況呢?
總結
在 Python 類編程中,實例方法是必須要掌握的內容,類方法與類靜態方法用得不多,因為兩者完全可以使用函數來代替,讀者如果感興趣可自行查閱類方法與類靜態方法的具體應用場景。
希望本文的內容有助於讀者的學習、工作!最後感謝您的閱讀!
閱讀更多 猴哥技術站 的文章