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