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()
炒菜
三、多繼承
我們可以在括號中寫入多個父類,並用逗號隔開,就可以表示多繼承。
需要註意的是,如果父類中有同名的方法或屬性被子類繼承,子類優先繼承第一個父類的方法。
''' 測試python多繼承 多繼承時,若父類有同名的屬性或方法,則優先繼承先繼承的父類 ''' 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,並創建共有方法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類的繼承內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python編程super應用場景及示例解析
- Python中super()的理解以及應用場景實例
- Python 類和對象詳細介紹
- 終於搞懂瞭Python中super(XXXX, self).__init__()的作用瞭
- python中super()函數的理解與基本使用