Python編程分享:實例方法、靜態方法、類方法詳解(附代碼)

在面向對象的編程中,已知類屬性可細分為類屬性和實例屬性一樣,同樣的,對於類中的方法也可以具體可劃分為

類方法、實例方法和靜態方法!本文將通過代碼演示對這三種方法做將詳細介紹!

Python編程分享:實例方法、靜態方法、類方法詳解(附代碼)

python類編程三大方法

Python實例方法

在類編程中,一般情況下在類中定義的方法/函數默認都是實例方法。我們以下圖中的代碼來詳細說明:

Python編程分享:實例方法、靜態方法、類方法詳解(附代碼)

實例方法

python的類編程中實例方法最大的特點就是最少要包含一個 self 參數,該self參數的作用是綁定調用此方法的實例對象,如上述代碼中的self參數便是指向實例myhouse,類比C++中的this指針。

此外,實例方法除了能夠被實例本身調用外,還能夠通過類名直接調用,但需要指定調用的實例對象,如上述代碼中通過類名調用實例myhouse的testfunc()方法:

#self參數綁定為對象myhouse
house.testfunc(myhouse,"類名調用實例方法")

Python類方法

Python 中的類方法和實例方法類似,但類方法需要滿足以下要求:

  • 類方法至少需要包含一個參數,與實例方法不同的是該參數並非self,而是python程序員約定俗成的參數:cls。
  • Python 會自動將類本身綁定到
    cls參數(非類對象),故在調用類方法時,無需顯式為 cls 參數傳遞參數。
  • 類方法需要使用修飾語句: @classmethod

我們以下圖代碼來詳細說明:

Python編程分享:實例方法、靜態方法、類方法詳解(附代碼)

類方法示例

根據打印結果顯而易見類方法fly()即使通過實例對象b調用,其調用者也依然是

__main__.bird,而不是對象b。

Python類靜態方法

類中的靜態方法,實際上就是大家眾所周知的普通函數,存在的唯一區別是:

類靜態方在類命名空間中定義,而函數則在程序的全局命名空間中定義。

需要注意的是:

  • 類靜態方法沒有 self、cls 這樣的特殊參數,故 Python 解釋器不會對其包含的參數做任何類或對象的綁定。
  • 類靜態方法中無法調用任何類和對象的屬性和方法,類靜態方法與類的關係不大。

我們以下圖代碼來詳細說明:

Python編程分享:實例方法、靜態方法、類方法詳解(附代碼)

類靜態方法

一個問題:如果放開上圖中註釋掉的代碼print(self.name),會出現什麼情況呢?

總結

在 Python 類編程中,實例方法是必須要掌握的內容,類方法與類靜態方法用得不多,因為兩者完全可以使用函數來代替,讀者如果感興趣可自行查閱類方法與類靜態方法的具體應用場景。

希望本文的內容有助於讀者的學習、工作!最後感謝您的閱讀!

Python編程分享:實例方法、靜態方法、類方法詳解(附代碼)

感謝


分享到:


相關文章: