更新時(shí)間:2021-05-27 來(lái)源:黑馬程序員 瀏覽量:
“龍生龍,鳳生鳳,老鼠的兒子會(huì)打洞”,這句話(huà)將動(dòng)物界中的繼承關(guān)系表現(xiàn)的淋漓盡致。在Python中,類(lèi)與類(lèi)之間也具有繼承關(guān)系,其中被繼承的類(lèi)稱(chēng)為父類(lèi)或基類(lèi),繼承的類(lèi)稱(chēng)為子類(lèi)或派生類(lèi)。子類(lèi)在繼承父類(lèi)時(shí),會(huì)自動(dòng)擁有父類(lèi)中的方法和屬性。
單繼承指的是子類(lèi)只繼承一個(gè)父類(lèi),其語(yǔ)法格式如下:
class 子類(lèi)(父類(lèi)):
定義一個(gè)表示兩棲動(dòng)物的父類(lèi)Amphibian和一個(gè)表示青蛙的子類(lèi)Frog,示例代碼如下:
class Amphibian: name = "兩棲動(dòng)物" def features(self): print("幼年用鰓呼吸") print("成年用肺兼皮膚呼吸")class Frog(Amphibian): # Frog類(lèi)繼承自Amphibian類(lèi) def attr(self): print(f"青蛙是{self.name}") print("我會(huì)呱呱叫")
上述代碼定義的Amphibian類(lèi)中包含類(lèi)屬性name與實(shí)例方法features(),F(xiàn)rog類(lèi)繼承Amphibian類(lèi)并定義了自己的方法attr()。
創(chuàng)建Frog類(lèi)的對(duì)象frog,使用frog對(duì)象分別調(diào)用Amphibian類(lèi)與Frog類(lèi)中的方法,示例代碼如下:
frog = Frog() # 創(chuàng)建類(lèi)的實(shí)例化對(duì)象 print(frog.name) # 訪問(wèn)父類(lèi)的屬性 frog.features() # 使用父類(lèi)的方法 frog.attr() # 使用自身的方法
運(yùn)行程序,結(jié)果如下所示:
兩棲動(dòng)物 幼年用鰓呼吸。 成年用肺兼皮膚呼吸。 青蛙是兩棲動(dòng)物。 我會(huì)呱呱叫。
從輸出結(jié)果中可以看出,子類(lèi)繼承父類(lèi)之后,就擁有從父類(lèi)繼承的屬性和方法,它既可以調(diào)用自己的方法,又可以調(diào)用從父類(lèi)繼承的方法。
isinstance()函數(shù)與issubclass()函數(shù)
Python提供了兩個(gè)和繼承相關(guān)的函數(shù),分別是isinstance()函數(shù)和issubclass()函數(shù)。
isinstance(o,t)函數(shù)用于檢查對(duì)象的類(lèi)型,它有2個(gè)參數(shù),第1個(gè)參數(shù)是要判斷類(lèi)型的對(duì)象(o),第二個(gè)參數(shù)是類(lèi)型(t),如果o是t類(lèi)型的對(duì)象,則函數(shù)返回True,否則返回False。例如:
>>> isinstance(frog, Frog) True
函數(shù)issubclass(cls, classinfo)用于檢查類(lèi)的繼承關(guān)系,它也有2個(gè)參數(shù),第一個(gè)參數(shù)是要判斷的子類(lèi)類(lèi)型(cls),第二個(gè)參數(shù)是要判斷的父類(lèi)類(lèi)型(classinfo),如果cls類(lèi)型是classinfo類(lèi)型的子類(lèi),則函數(shù)返回True,否則返回False。例如:
>>> issubclass(Frog, AmphAnimal) True
猜你喜歡:
如何使用Python將sitemap.xml轉(zhuǎn)為sitemap.txt?