Python基礎(chǔ)知識(shí)學(xué)習(xí)之類的繼承
一、繼承的格式
類的繼承格式如下,括號(hào)中的為父類名。
class 類名(父類名): 代碼
二、單繼承
下面我們讓Man繼承自Master類,并調(diào)用繼承的showSkill方法。
class Master(): def __init__(self): self.skill='炒菜' def showSkill(self): print(self.skill) class Man(Master): pass man=Man() man.showSkill()
炒菜
三、多繼承
我們可以在括號(hào)中寫入多個(gè)父類,并用逗號(hào)隔開,就可以表示多繼承。
需要注意的是,如果父類中有同名的方法或?qū)傩员蛔宇惱^承,子類優(yōu)先繼承第一個(gè)父類的方法。
''' 測(cè)試python多繼承 多繼承時(shí),若父類有同名的屬性或方法,則優(yōu)先繼承先繼承的父類 ''' class Master(): def __init__(self): self.skill='炒菜' def showSkill(self): print(self.skill) class Bagger(): def __init__(self): self.skill='乞討' def showSkill(self): print(self.skill) class Man(Master,Bagger): pass man=Man() man.showSkill()
炒菜
四、重寫父類方法
python中重寫父類方法不需要override等任何的關(guān)鍵字,直接把原來的方法重寫一遍就好。
class Master(): def __init__(self): self.skill='炒菜' print("Master初始化完畢") def showSkill(self): print(self.skill) class Bagger(): def __init__(self): self.skill='乞討' print("Bagger初始化完畢") def showSkill(self): print(self.skill) #重寫父類的方法 class Man(Master,Bagger): #重寫__init__方法時(shí),并不會(huì)調(diào)用父類的__init方法 def __init__(self): #重寫父類的屬性skill self.skill='飛天' def showSkill(self): print("我的技能是:"+self.skill) man=Man() man.showSkill()
我的技能是:飛天
五、打印繼承關(guān)系
通過__mro__()方法我們可以得到當(dāng)前類繼承的所有類。
class Master(): def __init__(self): self.skill='炒菜' def showSkill(self): print(self.skill) class Bagger(Master): pass class Man(Bagger): pass man=Man() print(Man.__mro__)
六、調(diào)用父類方法
我們可以通過super().方法名,來調(diào)用父類中的 方法,哪怕該方法在子類中被重寫了。
class Master(): def __init__(self): self.skill='炒菜' def showSkill(self): print(self.skill) class Man(Master): def __init__(self): self.skill='吃飯' def showSkill(self): print(self.skill) super().__init__() super().showSkill() man=Man() man.showSkill()
吃飯
炒菜
七、私有屬性與方法
我們可以在方法或?qū)傩悦凹由?__ 來表示私有,在類的繼承中,只有父類的私有方法無(wú)法被繼承,其他屬性與方法都將被繼承,但私有屬性不能在子類中直接訪問,但我們可以同過繼承的父類公有方法來對(duì)其訪問。
下面我們定義私有屬性money,并創(chuàng)建共有方法set_money與get_money從子類中對(duì)其進(jìn)行訪問。
class Master(): #在屬性或方法面前加__,表示訪問權(quán)限為私有 __money=100000 def __init__(self): pass #設(shè)置為私有方法,無(wú)法被繼承 def __showMoney(self): print(self.__money) #使子類可以通過共有方法訪問私有屬性 def get_money(self): return self.__money def set_money(self,money): self.__money=money class Man(Master): pass man=Man() print("原來的money:"+man.get_money().__str__()) man.set_money(12) print("后來的money:"+man.get_money().__str__())
原來的money:100000
后來的money:12
到此這篇關(guān)于Python基礎(chǔ)知識(shí)學(xué)習(xí)之類的繼承的文章就介紹到這了,更多相關(guān)python類的繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python將多個(gè)文本文件合并為一個(gè)文本的代碼(便于搜索)
源代碼目錄一般很詳細(xì),每個(gè)代碼文件都不長(zhǎng),一般只占幾十行而已。在跟著書籍學(xué)習(xí)的過程中,可以打開源代碼運(yùn)行之后查看效果,或者適當(dāng)修改看看變化,這都是很好的掌握技術(shù)的好辦法。2011-03-03python鏈接sqlite數(shù)據(jù)庫(kù)的詳細(xì)代碼實(shí)例
SQLite數(shù)據(jù)庫(kù)是一款非常小巧的嵌入式開源數(shù)據(jù)庫(kù)軟件,也就是說沒有獨(dú)立的維護(hù)進(jìn)程,所有的維護(hù)都來自于程序本身,它是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低2021-09-09python html2text庫(kù)將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索
這篇文章主要為大家介紹了python html2text庫(kù)將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python+ChatGPT實(shí)戰(zhàn)之進(jìn)行游戲運(yùn)營(yíng)數(shù)據(jù)分析
最近ChatGPT蠻火的,今天試著讓ta用Python語(yǔ)言寫了一篇數(shù)據(jù)分析實(shí)戰(zhàn)案例。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-02-02python+appium自動(dòng)化測(cè)試之如何控制App的啟動(dòng)和退出
本文主要介紹了python+appium自動(dòng)化測(cè)試之如何控制App的啟動(dòng)和退出,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02