十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
本篇文章為大家展示了Python中怎么創(chuàng)建多重繼承,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站專注于伊川網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供伊川營(yíng)銷型網(wǎng)站建設(shè),伊川網(wǎng)站制作、伊川網(wǎng)頁(yè)設(shè)計(jì)、伊川網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造伊川網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供伊川網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
Python 多重繼承可能是非常有用的方法。然而,當(dāng)項(xiàng)目達(dá)到某種程度的復(fù)雜性之后,過(guò)程代碼通常會(huì)暴露出其根本缺陷。下面讓我們直接進(jìn)入上一個(gè)示例的面向?qū)ο蟀姹荆⒖纯催@樣有何變化。
#!/usr/bin/env python from subprocess import Popen, PIPE import re class DiskMonitor(): """Disk Monitoring Class""" def __init__(self, pattern="2[0-9]%", message="CAPACITY WARNING", cmd = "df -h"): self.pattern = pattern self.message = message self.cmd = cmd def disk_space(self): """Disk space capacity flag method""" ps = Popen(self.cmd, shell=True,stdout=PIPE,stderr=PIPE) output_lines = ps.stdout.readlines() for line in output_lines: lineline = line.strip() if re.search(self.pattern,line): print "%s %s" % (self.message,line) class MyDiskMonitor(DiskMonitor): """Customized Disk Monitoring Class""" def disk_space(self): ps = Popen(self.cmd, shell=True,stdout=PIPE,stderr=PIPE) print "RAW DISK REPORT:" print ps.stdout.read() if __name__ == "__main__": d = MyDiskMonitor() d.disk_space()
查看該代碼的面向?qū)ο蟀姹荆梢钥吹酱a變得更加抽象。有時(shí),太多的抽象會(huì)導(dǎo)致設(shè)計(jì)問(wèn)題,但是在此例中,它允許您將問(wèn)題分離為更多可重用的部分。DiskMonitor 類具有 __init__ method,您可以在其中定義新的參數(shù),并且 disk_space 函數(shù)現(xiàn)在是該類中的一個(gè)方法。
使用這種新的樣式,您無(wú)需更改原始代碼即可容易地重用和自定義各個(gè)部分,而使用過(guò)程代碼時(shí)則通常必須更改原始代碼。Python 多重繼承面向?qū)ο蟮脑O(shè)計(jì)的一個(gè)更加功能強(qiáng)大、通常也被過(guò)度使用的方面是繼承。繼承允許您在新的類中重用和自定義現(xiàn)有的代碼。讓我們?cè)谙乱粋€(gè)示例中看看繼承可能像什么樣子。
此輸出與前面帶標(biāo)記的版本區(qū)別非常大,因?yàn)樗皇鞘褂庙敳孔⑷氲?print 語(yǔ)句來(lái)打印的未經(jīng)篩選的 df –h 命令結(jié)果。通過(guò)重寫 MyDiskMonitor 類中的方法,您能夠完全改變 disk_space 方法的意圖。
允許您重用其他類中的屬性的 Python 多重繼承是這個(gè)“MyDiskMonitor(DiskMonitor)”語(yǔ)句。您只需在定義新類的名稱時(shí),將先前的類的名稱放在括號(hào)內(nèi)。一旦完成此步驟,您立即可以訪問(wèn)其他類屬性來(lái)做自己希望的事情。但是樂(lè)趣不僅于此。通過(guò)添加另一個(gè)通過(guò)電子郵件來(lái)發(fā)送標(biāo)記消息的方法。
也許是將其命名為 disk_alert(self),這樣就可以進(jìn)一步自定義新類。這是面向?qū)ο蟮脑O(shè)計(jì)的美妙之處;它允許有經(jīng)驗(yàn)的開發(fā)人員不斷重用已編寫的代碼,從而節(jié)省大量的時(shí)間。 遺憾的是,面向?qū)ο蟮木幊桃灿衅洳焕囊幻妗K羞@些抽象都是以復(fù)雜性為代價(jià)的,如果抽象過(guò)度,可能會(huì)徹底地弄巧成拙。
由于 Python 多重繼承,抽象可以達(dá)到相當(dāng)有害的復(fù)雜程度。您是否能夠想象只是為了編寫一個(gè)方法也要查看多個(gè)文件的情況?無(wú)論相信與否,這種情況的確會(huì)發(fā)生,并且代表了面向?qū)ο缶幊痰牟恍椰F(xiàn)實(shí)。
上述內(nèi)容就是Python中怎么創(chuàng)建多重繼承,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。