您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹什么是Python中類的繼承,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、繼承的概念
在現(xiàn)實生活中,繼承一般指的是子女繼承父輩的財產(chǎn),在程序中,繼承描述的是事物之間的所屬關(guā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()
運行結(jié)果為:
bs的名字是:波斯貓,顏色是:白色 波斯貓:在吃 湯姆貓:在跑
說明:
1.雖然子類沒有定義__init__()方法,但是父類有。所以在子類集成父類的時候這個方法就被繼承了,所以只要創(chuàng)建Bosi的對象,就默認(rèn)執(zhí)行了那個繼承過來的__init__()方法。
2.子類在繼承的時候,在定義類時,小括號()中為父類的名字。
3.父類的所有非私有的屬性、方法、會被繼承給子類。
注意:
1.私有的屬性,不能通過對象直接訪問,但是可以通過方法訪問。
2.私有的方法,不能通過對象直接訪問。
3.私有的屬性、方法,不會被子類繼承,也不能被訪問。
4.一般情況下,私有的屬性、方法都是不對外公布的,往往用來做內(nèi)部的事情,起到安全的作用。
class Animal(object): def __init__(self, name = "動物",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()
運行結(jié)果為:
白色 動物 白色 -----------------分割線----------------- 黃色 阿黃 黃色
三、多繼承
從圖中能夠看出,所謂多繼承,即子類有多個父類,并且具有它們的特征。
Python中多繼承的格式如下:
class A: def printA(self): print("---A---") class B: def printB(self): print("---B---") #定義一個子類繼承A,B class C(A,B): def printC(self): print("---C---") obj_C = C() obj_C.printA() obj_C.printB()
運行結(jié)果為:
---A--- ---B---
說明
1.python中是可以多繼承的。
2.父類中的方法、屬性,子類會繼承。
3.如果多個父類中有同一個方法,誰寫在前面就調(diào)用誰的方法。
class A: def printA(self): print("---A---") class B: def printB(self): print("---B---") #定義一個子類繼承A,B class C(A,B): def printC(self): print("---C---") obj_C = C() obj_C.printA() obj_C.printB() #可以查看一個雷的對象搜索方法時的先后順序 print(C.__mro__)
運行結(jié)果為:
---A--- ---B--- (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
關(guān)于什么是Python中類的繼承就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。