中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Python繼承機(jī)制如何使用-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)是一家專業(yè)提供井陘礦企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為井陘礦眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

Python繼承機(jī)制如何使用?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

繼承是面向?qū)ο蟮娜筇卣髦?,也是?shí)現(xiàn)軟件復(fù)用的重要手段。Python 的繼承是多繼承機(jī)制,即一個(gè)子類可以同時(shí)有多個(gè)直接父類。

Python 子類繼承父類的語法是在定義子類時(shí),將多個(gè)父類放在子類之后的圓括號(hào)里。語法格式如下:

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

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

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

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

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

從實(shí)際意義上看,子類是對(duì)父類的擴(kuò)展,子類是一種特殊的父類。從這個(gè)意義上看,使用繼承來描述子類和父類的關(guān)系是錯(cuò)誤的,用擴(kuò)展更恰當(dāng)。因此,這樣的說法更加準(zhǔn)確:Apple 類擴(kuò)展了 Fruit 類。

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

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

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

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

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

# 創(chuàng)建Apple對(duì)象
a = Apple()
a.weight = 5.6
# 調(diào)用Apple對(duì)象的info()方法
a.info()
# 調(diào)用Apple對(duì)象的taste()方法
a.taste()

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

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

關(guān)于Python的多繼承

大部分面向?qū)ο蟮木幊陶Z言(除了 C++)都只支持單繼承,而不支持多繼承,這是由于多繼承不僅增加了編程的復(fù)雜度,而且很容易導(dǎo)致一些莫名的錯(cuò)誤。

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

當(dāng)一個(gè)子類有多個(gè)直接父類時(shí),該子類會(huì)繼承得到所有父類的方法,這一點(diǎn)在前面示例中己經(jīng)做了示范。現(xiàn)在的問題是,如果多個(gè)父類中包含了同名的方法,此時(shí)會(huì)發(fā)生什么呢?此時(shí)排在前面的父類中的方法會(huì)“遮蔽”排在后面的父類中的同名方法。例如如下代碼:

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

上面 ① 號(hào)粗體字代碼讓 Mouse 繼承了 Item 類和 Product 類,由于 Item 排在前面,因此 Item 中定義的方法優(yōu)先級(jí)更好,Python 會(huì)優(yōu)先到 Item 父類中搜尋方法,一旦在 Item 父類中搜尋到目標(biāo)方法,Python 就不會(huì)繼續(xù)向下搜尋了。

上面程序中 Item 和 Product 兩個(gè)父類中都包含了 info() 方法,當(dāng) Mouse 子類對(duì)象調(diào)用 info() 方法時(shí)(子類中沒有定義 info() 方法,因此 Python 會(huì)從父類中尋找 info() 方法),此時(shí)優(yōu)先使用第一個(gè)父類 item 中的 info() 方法。

運(yùn)行上面程序,將看到如下輸出結(jié)果:

Item 中方法:這是一個(gè)商品

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

class Mouse(Product,Itern): #①

此時(shí) Product 父類的優(yōu)先級(jí)高于 Item 父類,因此 Product 中的 info() 方法將會(huì)起作用。運(yùn)行上面程序,將會(huì)看到如下輸出結(jié)果:

Product中方法:這是一個(gè)工業(yè)產(chǎn)品

看完上述內(nèi)容,你們掌握Python繼承機(jī)制如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁標(biāo)題:Python繼承機(jī)制如何使用-創(chuàng)新互聯(lián)
分享鏈接:http://www.rwnh.cn/article28/ccgpjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站營銷、軟件開發(fā)、網(wǎng)站收錄建站公司、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
荣昌县| 商城县| 济阳县| 哈巴河县| 通许县| 江津市| 达孜县| 泰宁县| 中方县| 肥西县| 临安市| 永顺县| 眉山市| 景东| 平安县| 长寿区| 巨野县| 攀枝花市| 宾阳县| 巴林左旗| 中宁县| 株洲市| 峨山| 庄河市| 仁怀市| 辽阳市| 江津市| 朝阳区| 尉氏县| 新蔡县| 卫辉市| 静海县| 新巴尔虎右旗| 大庆市| 锡林郭勒盟| 汉寿县| 长汀县| 伊川县| 花莲县| 炉霍县| 衡阳县|