Python基礎知識學習之類的繼承
一、繼承的格式
類的繼承格式如下,括號中的為父類名。
class 類名(父類名): 代碼
二、單繼承
下面我們讓Man繼承自Master類,并調用繼承的showSkill方法。
class Master():
def __init__(self):
self.skill='炒菜'
def showSkill(self):
print(self.skill)
class Man(Master):
pass
man=Man()
man.showSkill()
炒菜
三、多繼承
我們可以在括號中寫入多個父類,并用逗號隔開,就可以表示多繼承。
需要注意的是,如果父類中有同名的方法或屬性被子類繼承,子類優(yōu)先繼承第一個父類的方法。
'''
測試python多繼承
多繼承時,若父類有同名的屬性或方法,則優(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等任何的關鍵字,直接把原來的方法重寫一遍就好。
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__方法時,并不會調用父類的__init方法
def __init__(self):
#重寫父類的屬性skill
self.skill='飛天'
def showSkill(self):
print("我的技能是:"+self.skill)
man=Man()
man.showSkill()
我的技能是:飛天
五、打印繼承關系
通過__mro__()方法我們可以得到當前類繼承的所有類。
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__)
六、調用父類方法
我們可以通過super().方法名,來調用父類中的 方法,哪怕該方法在子類中被重寫了。
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()
吃飯
炒菜
七、私有屬性與方法
我們可以在方法或屬性名前加上 __ 來表示私有,在類的繼承中,只有父類的私有方法無法被繼承,其他屬性與方法都將被繼承,但私有屬性不能在子類中直接訪問,但我們可以同過繼承的父類公有方法來對其訪問。
下面我們定義私有屬性money,并創(chuàng)建共有方法set_money與get_money從子類中對其進行訪問。
class Master():
#在屬性或方法面前加__,表示訪問權限為私有
__money=100000
def __init__(self):
pass
#設置為私有方法,無法被繼承
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
到此這篇關于Python基礎知識學習之類的繼承的文章就介紹到這了,更多相關python類的繼承內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python html2text庫將HTML文檔轉換為純文本格式使用示例探索
這篇文章主要為大家介紹了python html2text庫將HTML文檔轉換為純文本格式使用示例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
python神經網絡tfrecords文件的寫入讀取及內容解析
這篇文章主要為大家介紹了python神經網絡tfrecords文件的寫入讀取及內容解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
Python+ChatGPT實戰(zhàn)之進行游戲運營數據分析
最近ChatGPT蠻火的,今天試著讓ta用Python語言寫了一篇數據分析實戰(zhàn)案例。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-02-02
python+appium自動化測試之如何控制App的啟動和退出
本文主要介紹了python+appium自動化測試之如何控制App的啟動和退出,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

