Python面向?qū)ο笾蓄悾╟lass)的簡(jiǎn)單理解與用法分析
本文實(shí)例講述了Python面向?qū)ο笾蓄悾╟lass)的簡(jiǎn)單理解與用法。分享給大家供大家參考,具體如下:
我們先來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的類
class Fish(object): pass xiaoming = Fish()
一個(gè)基礎(chǔ)類(base class) Fish(魚)類就創(chuàng)建好了。class Fish(object)等同于class Fish()
caoyu = Fish() 語(yǔ)句創(chuàng)建了一個(gè)對(duì)象:xiaoming(小明)。變量名 = 類名+() 實(shí)例化 類
下面對(duì)Fish類進(jìn)行擴(kuò)充
class Fish():
def weight(self,weight):
print("魚的重量:{}".format(weight))
xiaoming = Fish()
xiaoming.weight(100)
運(yùn)行結(jié)果:
魚的重量:100
關(guān)于self:
- self代表類(class)的實(shí)例(instance)
- self可以用其他詞匯代替,name,you等,這只不過是約定俗成的
- self必須定義,但不需要手動(dòng)傳值
我們?cè)谶@個(gè)類里面定義了一個(gè)函數(shù)weight(),函數(shù)有兩個(gè)參數(shù)self和weight,self我們只需要在創(chuàng)建函數(shù)時(shí)定義即可,傳值調(diào)用時(shí)不用管。
當(dāng)我們想給這個(gè)Fish類預(yù)設(shè)一些屬性,初始化創(chuàng)建的實(shí)例化對(duì)象時(shí),就可以定義一個(gè)__init__方法,在創(chuàng)建對(duì)象時(shí)自動(dòng)進(jìn)行初始化,
__init__前面是兩個(gè)下劃線
class Fish():
def __init__(self):
print("魚都生活在水里。")
def weight(self,weight):
print("魚的重量:{}".format(weight))
xiaoming = Fish()
#xiaoming.weight(100)
注釋掉caoyu.weight(100)得到結(jié)果為:
魚都生活在水里。
上面的代碼定義了一個(gè)__init__方法,在caoyu這個(gè)對(duì)象建立的時(shí)候自動(dòng)運(yùn)行這個(gè)方法,打印輸出了“魚都生活在水里。”
創(chuàng)建了Fish() 魚 類,突然覺得這個(gè)類包括的魚太多了,那我們?cè)賮?lái)一個(gè)細(xì)分,即從Fish() 這個(gè)父類的基礎(chǔ)之上,創(chuàng)建一個(gè)子類。子類繼承了父類的一些屬性,比如魚都生活在水里,但又具有自己獨(dú)有的特征,即屬性。我們通過 class caoyu(Fish)定義了Fish父類下的caoyu(草魚)子類。
class x(y)創(chuàng)建一個(gè)x類是y類的子類,就是創(chuàng)建子類的一般方法
class Fish():
def __init__(self):
print("魚都生活在水里。")
def weight(self,weight):
print("魚的重量:{}".format(weight))
class caoyu(Fish):
pass
xiaoli = caoyu()
輸出結(jié)果:
魚都生活在水里。
從上面的代碼可以看到,class caoyu(Fish)這個(gè)類是Fish的子類,子類會(huì)繼承父類的屬性。我們實(shí)例化caoyu類后,就輸出了“魚生活在水里”,繼承自父類Fish()的__init__方法。我們也可以重新定義子類的__init__方法,父類的__init__方法就會(huì)失效,就像下面這樣:
class Fish():
def __init__(self):
print("魚都生活在水里。")
def weight(self,weight):
print("魚的重量:{}".format(weight))
class caoyu(Fish):
def __init__(self):
print("魚類都有鰓。但不會(huì)得腮腺炎。")
xiaoli = caoyu()
輸出結(jié)果為:
魚類都有鰓。但不會(huì)得腮腺炎。
我們也可以在子類中調(diào)用父類的函數(shù)
xiaoli.weight(100)
輸出結(jié)果為:
魚類都有鰓。但不會(huì)得腮腺炎。
魚的重量:100
總結(jié):
我們首先創(chuàng)建了一個(gè)基礎(chǔ)類Fish(魚)類(class),然后我們需要進(jìn)行實(shí)例化(instance)出一個(gè)對(duì)象(object),我們實(shí)例化對(duì)象的名字叫做xiaoming(小明),就像我在菜市場(chǎng)買了一條魚,我必須通過買這個(gè)動(dòng)作(實(shí)例化),買了之后才擁有了一條魚,一條屬于我的“魚”:xiaoming。然后我能用xiaoming這條魚來(lái)煲湯(函數(shù)),做菜或者看他在水里游,這些動(dòng)作就像調(diào)用類里面的函數(shù)一樣,只有買來(lái)了魚才能做這些動(dòng)作,為了做這些動(dòng)作還需要加入蔥姜蒜這些佐料(參數(shù))。
而我們創(chuàng)建了子類caoyu(草魚),草魚也是魚的一種,所以它也有父類Fish()的一些基本的屬性,有鰓,可以在水里自由呼吸,同時(shí)也可以拿來(lái)煲湯,(這就繼承了魚的普遍屬性)但它也有自己的特點(diǎn),它可能做水煮魚片比做酸菜魚好吃,這是與其他魚區(qū)別的地方。
- class Fish(): 創(chuàng)建一個(gè)基本類 Fish
- class caoyu(Fish): 創(chuàng)建一個(gè)類caoyu,它是類Fish()的子類
- class Fish(): def init(self): 定義一個(gè)方法__init__,作用是對(duì)類class 進(jìn)行初始化,比如給魚基本屬性:能在水中呼吸。
- class Fish(): def weight(self, J):Fish()類下定義一個(gè)weight函數(shù),接收self和J作為參數(shù),用于說(shuō)明魚的重量
- xiaoming = Fish(): 將xiaoming設(shè)置為類Fish()的一個(gè)實(shí)例
- xiaoming.weight(J): 從xiaoming對(duì)象中找到函數(shù)weight,并用self和J參數(shù)調(diào)用它,self由Python自動(dòng)填入,所以調(diào)用時(shí)只傳入?yún)?shù)J
以上只是個(gè)人粗淺的理解,面向?qū)ο笫莻€(gè)很深的東西,還需多多練習(xí),慢慢消化理解!
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
tensorflow實(shí)現(xiàn)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)
這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Gradio機(jī)器學(xué)習(xí)模型快速部署工具quickstart
這篇文章主要為大家介紹了Gradio機(jī)器學(xué)習(xí)模型快速部署工具quickstart,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
python通過yield實(shí)現(xiàn)數(shù)組全排列的方法
這篇文章主要介紹了python通過yield實(shí)現(xiàn)數(shù)組全排列的方法,實(shí)例分析了全排列的概念及yield實(shí)現(xiàn)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
經(jīng)驗(yàn)豐富程序員才知道的15種高級(jí)Python小技巧(收藏)
本文將介紹15個(gè)簡(jiǎn)潔的Python技巧,向著簡(jiǎn)潔更高效,學(xué)習(xí)易懂出發(fā),具說(shuō)只有經(jīng)驗(yàn)豐富程序員才知道的15種高級(jí)Python小技巧,喜歡的朋友快來(lái)看看吧2021-10-10
Python使用pyshp庫(kù)讀取shapefile信息的方法
今天小編就為大家分享一篇Python使用pyshp庫(kù)讀取shapefile信息的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-12-12
詳解PyCharm使用pyQT5進(jìn)行GUI開發(fā)的基本流程
本文主要介紹了PyCharm使用pyQT5進(jìn)行GUI開發(fā)的基本流程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
python壓縮文件夾內(nèi)所有文件為zip文件的方法
這篇文章主要介紹了python壓縮文件夾內(nèi)所有文件為zip文件的方法,可實(shí)現(xiàn)簡(jiǎn)單的zip文件壓縮功能,需要的朋友可以參考下2015-06-06

