目錄
- 一、繼承的格式
- 二、單繼承
- 三、多繼承
- 四、重寫(xiě)父類(lèi)方法
- 五、打印繼承關(guān)系
- 六、調(diào)用父類(lèi)方法
- 七、私有屬性與方法
一、繼承的格式
類(lèi)的繼承格式如下,括號(hào)中的為父類(lèi)名。
class 類(lèi)名(父類(lèi)名):
代碼
二、單繼承
下面我們讓Man繼承自Master類(lèi),并調(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)中寫(xiě)入多個(gè)父類(lèi),并用逗號(hào)隔開(kāi),就可以表示多繼承。
需要注意的是,如果父類(lèi)中有同名的方法或?qū)傩员蛔宇?lèi)繼承,子類(lèi)優(yōu)先繼承第一個(gè)父類(lèi)的方法。
'''
測(cè)試python多繼承
多繼承時(shí),若父類(lèi)有同名的屬性或方法,則優(yōu)先繼承先繼承的父類(lèi)
'''
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()
炒菜
四、重寫(xiě)父類(lèi)方法
python中重寫(xiě)父類(lèi)方法不需要override等任何的關(guān)鍵字,直接把原來(lái)的方法重寫(xiě)一遍就好。
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)
#重寫(xiě)父類(lèi)的方法
class Man(Master,Bagger):
#重寫(xiě)__init__方法時(shí),并不會(huì)調(diào)用父類(lèi)的__init方法
def __init__(self):
#重寫(xiě)父類(lèi)的屬性skill
self.skill='飛天'
def showSkill(self):
print("我的技能是:"+self.skill)
man=Man()
man.showSkill()
我的技能是:飛天
五、打印繼承關(guān)系
通過(guò)__mro__()方法我們可以得到當(dāng)前類(lèi)繼承的所有類(lèi)。
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)用父類(lèi)方法
我們可以通過(guò)super().方法名,來(lái)調(diào)用父類(lèi)中的 方法,哪怕該方法在子類(lèi)中被重寫(xiě)了。
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ū)傩悦凹由?__ 來(lái)表示私有,在類(lèi)的繼承中,只有父類(lèi)的私有方法無(wú)法被繼承,其他屬性與方法都將被繼承,但私有屬性不能在子類(lèi)中直接訪問(wèn),但我們可以同過(guò)繼承的父類(lèi)公有方法來(lái)對(duì)其訪問(wèn)。
下面我們定義私有屬性money,并創(chuàng)建共有方法set_money與get_money從子類(lèi)中對(duì)其進(jìn)行訪問(wèn)。
class Master():
#在屬性或方法面前加__,表示訪問(wèn)權(quán)限為私有
__money=100000
def __init__(self):
pass
#設(shè)置為私有方法,無(wú)法被繼承
def __showMoney(self):
print(self.__money)
#使子類(lèi)可以通過(guò)共有方法訪問(wèn)私有屬性
def get_money(self):
return self.__money
def set_money(self,money):
self.__money=money
class Man(Master):
pass
man=Man()
print("原來(lái)的money:"+man.get_money().__str__())
man.set_money(12)
print("后來(lái)的money:"+man.get_money().__str__())
原來(lái)的money:100000
后來(lái)的money:12
到此這篇關(guān)于Python基礎(chǔ)知識(shí)學(xué)習(xí)之類(lèi)的繼承的文章就介紹到這了,更多相關(guān)python類(lèi)的繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python編寫(xiě)接口測(cè)試文檔(以豆瓣搜索為例)
- Python3接口性能測(cè)試實(shí)例代碼
- python面向?qū)ο笾?lèi)的繼承詳解
- Python正確重載運(yùn)算符的方法示例詳解
- python接口,繼承,重載運(yùn)算符詳解