Python繼承機制如何使用-創新互聯

創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

創新互聯是一家專業提供井陘礦企業網站建設,專注與成都網站建設、網站建設、H5網站設計、小程序制作等業務。10年已為井陘礦眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。

Python繼承機制如何使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

繼承是面向對象的三大特征之一,也是實現軟件復用的重要手段。Python 的繼承是多繼承機制,即一個子類可以同時有多個直接父類。

Python 子類繼承父類的語法是在定義子類時,將多個父類放在子類之后的圓括號里。語法格式如下:

class Subclass (SuperClass1, SuperClass2, ...)
    #類定義部分

從上面的語法格式來看,定義子類的語法非常簡單,只需在原來的類定義后增加圓括號,井在圓括號中添加多個父類,即可表明該子類繼承了這些父類。

如果在定義一個 Python 類時并未顯式指定這個類的直接父類,則這個類默認繼承 object 類。因此,object 類是所有類的父類,要么是其直接父類,要么是其間接父類。

實現繼承的類被稱為子類,被繼承的類被稱為父類(也被稱為基類、超類)。父類和子類的關系,是一般和特殊的關系。例如水果和蘋果的關系,蘋果繼承了水果,蘋果是水果的子類,則蘋果是一種特殊的水果。

由于子類是一種特殊的父類,因此父類包含的范圍總比子類包含的范圍要大,所以可以認為父類是大類,而子類是小類。

從實際意義上看,子類是對父類的擴展,子類是一種特殊的父類。從這個意義上看,使用繼承來描述子類和父類的關系是錯誤的,用擴展更恰當。因此,這樣的說法更加準確:Apple 類擴展了 Fruit 類。

從子類的角度來看,子類擴展(extend)了父類;但從父類的角度來看,父類派生(derive)出子類。也就是說,
擴展和派生所描述的是同一個動作,只是觀察角度不同而已。

下面程序示范了子類繼承父類的特點。下面是 Fruit 類的代碼:

class Fruit:
    def info(self):
        print("我是一個水果!重%g克" % self.weight)

class Food:
    def taste(self):
        print("不同食物的口感不同")

# 定義Apple類,繼承了Fruit和Food類
class Apple(Fruit, Food):
    pass

# 創建Apple對象
a = Apple()
a.weight = 5.6
# 調用Apple對象的info()方法
a.info()
# 調用Apple對象的taste()方法
a.taste()

上面程序開始定義了兩個父類:Fruit 類和 Food 類,接下來程序定義了一個 Apple 類,該 Apple 類基本上是一個空類。

在主程序部分,主程序,創建了 Apple 對象之后,可以訪問底 Apple 對象的 info() 和 taste() 方法,這表明 Apple 對象也具有了 info() 和 taste() 方法,這就是繼承的作用,即子類擴展(繼承)了父類,將可以繼承得到父類定義的方法,這樣子類就可復用父類的方法了。

關于Python的多繼承

大部分面向對象的編程語言(除了 C++)都只支持單繼承,而不支持多繼承,這是由于多繼承不僅增加了編程的復雜度,而且很容易導致一些莫名的錯誤。

Python 雖然在語法上明確支持多繼承,但通常推薦如果不是很有必要,則盡量不要使用多繼承,而是使用單繼承,這樣可以保證編程思路更清晰,而且可以避免很多麻煩。

當一個子類有多個直接父類時,該子類會繼承得到所有父類的方法,這一點在前面示例中己經做了示范。現在的問題是,如果多個父類中包含了同名的方法,此時會發生什么呢?此時排在前面的父類中的方法會“遮蔽”排在后面的父類中的同名方法。例如如下代碼:

class Item:
    def info (self):
        print("Item中方法:", '這是一個商品')
class Product:
    def info (self):
        print("Product中方法:", '這是一個工業產品')
#class Mouse(Item, Product): # ①
class Mouse(Product, Item): # ①
    pass
m = Mouse()
m.info()

上面 ① 號粗體字代碼讓 Mouse 繼承了 Item 類和 Product 類,由于 Item 排在前面,因此 Item 中定義的方法優先級更好,Python 會優先到 Item 父類中搜尋方法,一旦在 Item 父類中搜尋到目標方法,Python 就不會繼續向下搜尋了。

上面程序中 Item 和 Product 兩個父類中都包含了 info() 方法,當 Mouse 子類對象調用 info() 方法時(子類中沒有定義 info() 方法,因此 Python 會從父類中尋找 info() 方法),此時優先使用第一個父類 item 中的 info() 方法。

運行上面程序,將看到如下輸出結果:

Item 中方法:這是一個商品

如果將程序中第 7 行代碼改為如下形式:

class Mouse(Product,Itern): #①

此時 Product 父類的優先級高于 Item 父類,因此 Product 中的 info() 方法將會起作用。運行上面程序,將會看到如下輸出結果:

Product中方法:這是一個工業產品

看完上述內容,你們掌握Python繼承機制如何使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯-成都網站建設公司行業資訊頻道,感謝各位的閱讀!

網頁標題:Python繼承機制如何使用-創新互聯
分享鏈接:http://m.kartarina.com/article28/ccgpjp.html

成都網站建設公司_創新互聯,為您提供App開發網站營銷軟件開發網站收錄建站公司外貿建站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 国产精品无码永久免费888 | 亚洲AV无码专区国产乱码不卡| 中文字幕丰满伦子无码| 午夜不卡无码中文字幕影院| 久久精品无码中文字幕| 成人免费无码H在线观看不卡| 麻豆aⅴ精品无码一区二区| 亚洲成A∨人片天堂网无码| 久久久久亚洲AV无码永不| 无码精品人妻一区二区三区影院| 无套中出丰满人妻无码| 久久国产精品无码网站| 无码人妻精品一区二区三区久久久 | 日本精品无码一区二区三区久久久| 日韩专区无码人妻| 亚洲AV无码一区二区一二区| 国内精品人妻无码久久久影院导航| 亚洲爆乳少妇无码激情| 色窝窝无码一区二区三区| 中文字字幕在线中文无码| 国产AV无码专区亚洲AV蜜芽| 无码AV中文字幕久久专区| 亚洲国产成人精品无码区在线观看 | 国产乱子伦精品无码专区| 亚洲aⅴ无码专区在线观看春色 | 中文字幕人妻无码一区二区三区| 亚洲av日韩aⅴ无码色老头| 亚洲国产成人精品无码一区二区| 暴力强奷在线播放无码| 亚洲成av人片不卡无码久久| 无码粉嫩虎白一线天在线观看| 久久亚洲精品成人无码网站| 亚洲国产精品无码专区影院 | 亚洲欧洲日产国码无码网站| 免费无码午夜福利片 | 亚洲AV日韩AV永久无码久久| 亚洲日韩精品一区二区三区无码| 亚洲午夜福利精品无码| 久久久久亚洲AV无码专区桃色| 久久国产精品无码网站| 国产亚洲人成无码网在线观看|