派生類的定義如下所示:
classDerivedClassName(BaseClassName):
命名BaseClassName(示例中的基類名)必須與派生類定義在一個(gè)作用域內(nèi)。除了類,還可以用表達(dá)式,基類定義在另一個(gè)模塊中時(shí)這一點(diǎn)非常有用:
classDerivedClassName(modname.BaseClassName):
派生類的實(shí)例化沒(méi)有什么特殊之處:DerivedClassName()(示列中的派生類)創(chuàng)建一個(gè)新的類實(shí)例。方法引用按如下規(guī)則解析:搜索對(duì)應(yīng)的類屬性,必要時(shí)沿基類鏈逐級(jí)搜索,如果找到了函數(shù)對(duì)象這個(gè)方法引用就是合法的。派生類可能會(huì)覆蓋其基類的方法。因?yàn)榉椒ㄕ{(diào)用同一個(gè)對(duì)象中的其它方法時(shí)沒(méi)有特權(quán),基類的方法調(diào)用同一個(gè)基類的方法時(shí),可能實(shí)際上最終調(diào)用了派生類中的覆蓋方法。派生類中的覆蓋方法可能是想要擴(kuò)充而不是簡(jiǎn)單的替代基類中的重名方法。有一個(gè)簡(jiǎn)單的方法可以直接調(diào)用基類方法,只要調(diào)用:BaseClassName.methodname(self,arguments)。
Python有兩個(gè)用于繼承的函數(shù):
函數(shù)isinstance()用于檢查實(shí)例類型:isinstance(obj,int)只有在obj.__class__是int或其它從int繼承的類型
函數(shù)issubclass()用于檢查類繼承:issubclass(bool,int)為T(mén)rue,因?yàn)閎ool是int的子類。但是,issubclass(unicode,str)是False,因?yàn)閡nicode不是str的子類(它們只是共享一個(gè)通用祖先類basestring)。
以上內(nèi)容為大家介紹了python的繼承,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。