這篇文章運(yùn)用簡單易懂的例子給大家介紹什么是Python中類的繼承,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)隆堯,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
一、繼承的概念
在現(xiàn)實(shí)生活中,繼承一般指的是子女繼承父輩的財(cái)產(chǎn),在程序中,繼承描述的是事物之間的所屬關(guān)系,例如貓和狗都屬于動(dòng)物,程序中便可以描述為貓和狗繼承自動(dòng)物;同理,波斯貓和巴厘貓都繼承自貓,而沙皮狗和斑點(diǎn)狗都繼承足夠,如下如所示:
二、繼承的示例
class Cat(object):
def __init__(self,name,color="白色"):
self.name = name
self.color = color
def run(self):
print("%s:在跑"%self.name)
class Bosi(Cat):
def setNewName(self,newName):
self.name = newName
def eat(self):
print("%s:在吃"%self.name)
bs = Bosi("波斯貓")
print("bs的名字是:%s,顏色是:%s"%(bs.name,bs.color))
bs.eat()
bs.setNewName("湯姆貓")
bs.run()運(yùn)行結(jié)果為:
bs的名字是:波斯貓,顏色是:白色 波斯貓:在吃 湯姆貓:在跑
說明:
1.雖然子類沒有定義__init__()方法,但是父類有。所以在子類集成父類的時(shí)候這個(gè)方法就被繼承了,所以只要?jiǎng)?chuàng)建Bosi的對象,就默認(rèn)執(zhí)行了那個(gè)繼承過來的__init__()方法。
2.子類在繼承的時(shí)候,在定義類時(shí),小括號()中為父類的名字。
3.父類的所有非私有的屬性、方法、會被繼承給子類。
注意:
1.私有的屬性,不能通過對象直接訪問,但是可以通過方法訪問。
2.私有的方法,不能通過對象直接訪問。
3.私有的屬性、方法,不會被子類繼承,也不能被訪問。
4.一般情況下,私有的屬性、方法都是不對外公布的,往往用來做內(nèi)部的事情,起到安全的作用。
class Animal(object):
def __init__(self, name = "動(dòng)物",color = "白色"):
self.__name = name
self.color = color
def __test1(self):
print(self.__name)
print(self.color)
def test2(self):
print(self.__name)
print(self.color)
class Dog(Animal):
def dogTest1(self):
#不能訪問父類的私有屬性:AttributeError: 'Animal' object has no attribute '__name'
#print(self.__name)
print(self.color)
def dogTest2(self):
#self.__test1()
self.test2()
A = Animal()
#print(A.__name)
print(A.color)
#不能訪問父類的私有方法:AttributeError: 'Animal' object has no attribute '__test1'
#A.__test1()
A.test2()
print("-----------------分割線-----------------")
D = Dog(name="阿黃",color = "黃色")
D.dogTest1()
D.dogTest2()運(yùn)行結(jié)果為:
白色 動(dòng)物 白色 -----------------分割線----------------- 黃色 阿黃 黃色
三、多繼承

從圖中能夠看出,所謂多繼承,即子類有多個(gè)父類,并且具有它們的特征。
Python中多繼承的格式如下:
class A:
def printA(self):
print("---A---")
class B:
def printB(self):
print("---B---")
#定義一個(gè)子類繼承A,B
class C(A,B):
def printC(self):
print("---C---")
obj_C = C()
obj_C.printA()
obj_C.printB()運(yùn)行結(jié)果為:
---A--- ---B---
說明
1.python中是可以多繼承的。
2.父類中的方法、屬性,子類會繼承。
3.如果多個(gè)父類中有同一個(gè)方法,誰寫在前面就調(diào)用誰的方法。
class A:
def printA(self):
print("---A---")
class B:
def printB(self):
print("---B---")
#定義一個(gè)子類繼承A,B
class C(A,B):
def printC(self):
print("---C---")
obj_C = C()
obj_C.printA()
obj_C.printB()
#可以查看一個(gè)雷的對象搜索方法時(shí)的先后順序
print(C.__mro__)運(yùn)行結(jié)果為:
---A--- ---B--- (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
關(guān)于什么是Python中類的繼承就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
文章題目:什么是Python中類的繼承
當(dāng)前網(wǎng)址:http://www.chinadenli.net/article4/iphioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站制作、定制開發(fā)、全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)