Python 靜態(tài)方法和類(lèi)方法實(shí)例分析
本文實(shí)例講述了Python 靜態(tài)方法和類(lèi)方法。分享給大家供大家參考,具體如下:
1. 類(lèi)屬性、實(shí)例屬性
它們?cè)诙x和使用中有所區(qū)別,而最本質(zhì)的區(qū)別是內(nèi)存中保存的位置不同,
實(shí)例屬性屬于對(duì)象
類(lèi)屬性屬于類(lèi)
class Province(object): # 類(lèi)屬性 country = '中國(guó)' def __init__(self, name): # 實(shí)例屬性 self.name = name # 創(chuàng)建一個(gè)實(shí)例對(duì)象 obj = Province('山東省') # 直接訪問(wèn)實(shí)例屬性 print(obj.name) # 直接訪問(wèn)類(lèi)屬性 Province.country
由上述代碼可以看出【實(shí)例屬性需要通過(guò)對(duì)象來(lái)訪問(wèn)】【類(lèi)屬性通過(guò)類(lèi)訪問(wèn)】,在使用上可以看出實(shí)例屬性和類(lèi)屬性的歸屬是不同的。
其在內(nèi)容的存儲(chǔ)方式類(lèi)似如下圖:
由上圖看出:
類(lèi)屬性在內(nèi)存中只保存一份
實(shí)例屬性在每個(gè)對(duì)象中都要保存一份
應(yīng)用場(chǎng)景:
通過(guò)類(lèi)創(chuàng)建實(shí)例對(duì)象時(shí),如果每個(gè)對(duì)象需要具有相同名字的屬性,那么就使用類(lèi)屬性,用一份既可
2. 實(shí)例方法、靜態(tài)方法和類(lèi)方法
方法包括:實(shí)例方法、靜態(tài)方法和類(lèi)方法,三種方法在內(nèi)存中都?xì)w屬于類(lèi),區(qū)別在于調(diào)用方式不同。
實(shí)例方法:由對(duì)象調(diào)用;至少一個(gè)self參數(shù);執(zhí)行實(shí)例方法時(shí),自動(dòng)將調(diào)用該方法的對(duì)象賦值給self;
類(lèi)方法:由類(lèi)調(diào)用; 至少一個(gè)cls參數(shù);執(zhí)行類(lèi)方法時(shí),自動(dòng)將調(diào)用該方法的類(lèi)賦值給cls;
靜態(tài)方法:由類(lèi)調(diào)用;無(wú)默認(rèn)參數(shù);
class Foo(object): def __init__(self, name): self.name = name def ord_func(self): """ 定義實(shí)例方法,至少有一個(gè)self參數(shù) """ # print(self.name) print('實(shí)例方法') @classmethod def class_func(cls): """ 定義類(lèi)方法,至少有一個(gè)cls參數(shù) """ print('類(lèi)方法') @staticmethod def static_func(): """ 定義靜態(tài)方法 ,無(wú)默認(rèn)參數(shù)""" print('靜態(tài)方法') f = Foo("中國(guó)") # 調(diào)用實(shí)例方法 f.ord_func() # 調(diào)用類(lèi)方法 Foo.class_func() # 調(diào)用靜態(tài)方法 Foo.static_func()
對(duì)比
相同點(diǎn):對(duì)于所有的方法而言,均屬于類(lèi),所以 在內(nèi)存中也只保存一份
不同點(diǎn):方法調(diào)用者不同、調(diào)用方法時(shí)自動(dòng)傳入的參數(shù)不同。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python實(shí)例方法、類(lèi)方法、靜態(tài)方法區(qū)別詳解
- 深入了解Python 方法之類(lèi)方法 & 靜態(tài)方法
- 解析python 類(lèi)方法、對(duì)象方法、靜態(tài)方法
- Python 面向?qū)ο箪o態(tài)方法、類(lèi)方法、屬性方法知識(shí)點(diǎn)小結(jié)
- Python 類(lèi)方法和實(shí)例方法(@classmethod),靜態(tài)方法(@staticmethod)原理與用法分析
- Python 實(shí)例方法、類(lèi)方法、靜態(tài)方法的區(qū)別與作用
- Python3.0中普通方法、類(lèi)方法和靜態(tài)方法的比較
- Python實(shí)例方法、類(lèi)方法、靜態(tài)方法的區(qū)別與作用詳解
- 深入解析python中的實(shí)例方法、類(lèi)方法和靜態(tài)方法
- Python面向?qū)ο笾o態(tài)屬性、類(lèi)方法與靜態(tài)方法分析
- 淺談python中的實(shí)例方法、類(lèi)方法和靜態(tài)方法
- 淺談python 類(lèi)方法/靜態(tài)方法
相關(guān)文章
python selenium 獲取標(biāo)簽的屬性值、內(nèi)容、狀態(tài)方法
今天小編就為大家分享一篇python selenium 獲取標(biāo)簽的屬性值、內(nèi)容、狀態(tài)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06java中兩個(gè)byte數(shù)組實(shí)現(xiàn)合并的示例
今天小編就為大家分享一篇java中兩個(gè)byte數(shù)組實(shí)現(xiàn)合并的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05django進(jìn)階之cookie和session的使用示例
這篇文章主要介紹了django進(jìn)階之cookie和session的使用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)做人臉識(shí)別的示例代碼
這篇文章主要介紹了使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)做人臉識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03