Python實例方法、類方法和類方法靜態方法淺析
一、前言
類方法也可以進行更細致的劃分,具體可分為類方法、實例方法和靜態方法。
二、案例詳解
實例方法
通常情況下,在類中定義的方法默認都是實例方法。
例:
- class CLanguage:
- # 類構造方法,也屬于實例方法
- def __init__(self):
- self.name = "百度"
- self.add = "www.baidu.com"
- # 下面定義了一個say實例方法
- def say(self):
- print("正在調用 say() 實例方法")
調用say()方法,實現功能。
- clang = CLanguage()
- clang.say()
運行結果:
注:
實例方法最少也要包含一個 self 參數,用于綁定調用此方法的實例對象。
類方法
Python 類方法和實例方法相似,它最少也要包含一個參數,只不過類方法中通常將其命名為 cls,Python 會自動將類本身綁定給 cls 參數(注意,綁定的不是類對象)。所以在調用類方法時,無需顯式為 cls 參數傳參。
和實例方法最大的不同在于,類方法需要使用@classmethod修飾符進行修飾。
例:
- class ass:
- #類構造方法,也屬于實例方法
- def __init__(self):
- self.name = "百度"
- self.add = "www.baidu.com"
- #定義了一個類方法
- @classmethod
- def info(cls):
- print("正在調用類方法",cls)
如果沒有 @classmethod,則 Python 解釋器會將 fly() 方法認定為實例方法,而不是類方法。
類方法推薦使用類名直接調用。
- #使用類名直接調用類方法
- ass.info()
- #使用類對象調用類方法
- clang = ass()
- clang.info()
運行結果:
類靜態方法
靜態方法定義在類這個空間(類命名空間)中,而函數則定義在程序所在的空間(全局命名空間)中。
靜態方法沒有類似 self、cls 這樣的特殊參數,因此 Python 解釋器不會對它包含的參數做任何類或對象的綁定。
靜態方法需要使用@staticmethod修飾。
例:
- class ass:
- @staticmethod
- def info(name, add):
- print(name, add)
靜態方法可以使用類名,類對象兩種方式進行調用。
- # 使用類名直接調用靜態方法
- ass.info("百度1", "www.baidu.com")
- # 使用類對象調用靜態方法
- clang = ass()
- clang.info("百度2", "www.baidu.com")
運行結果:
三、總結
本文基于Python基礎,介紹了實例方法、類方法和類方法靜態方法,通過實際案例講解了三種方法的不同用法,通過代碼演示,運行效果圖的展示,能夠幫助讀者更好的理解。
歡迎大家積極嘗試,有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。
代碼很簡單,希望對你學習有幫助。