溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中怎么創(chuàng)建多重繼承

發(fā)布時間:2021-07-28 15:45:17 來源:億速云 閱讀:162 作者:Leah 欄目:編程語言

本篇文章為大家展示了Python中怎么創(chuàng)建多重繼承,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Python 多重繼承可能是非常有用的方法。然而,當項目達到某種程度的復(fù)雜性之后,過程代碼通常會暴露出其根本缺陷。下面讓我們直接進入上一個示例的面向?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變得更加抽象。有時,太多的抽象會導(dǎo)致設(shè)計問題,但是在此例中,它允許您將問題分離為更多可重用的部分。DiskMonitor 類具有 __init__ method,您可以在其中定義新的參數(shù),并且 disk_space 函數(shù)現(xiàn)在是該類中的一個方法。

使用這種新的樣式,您無需更改原始代碼即可容易地重用和自定義各個部分,而使用過程代碼時則通常必須更改原始代碼。Python 多重繼承面向?qū)ο蟮脑O(shè)計的一個更加功能強大、通常也被過度使用的方面是繼承。繼承允許您在新的類中重用和自定義現(xiàn)有的代碼。讓我們在下一個示例中看看繼承可能像什么樣子。

此輸出與前面帶標記的版本區(qū)別非常大,因為它只是使用頂部注入的 print 語句來打印的未經(jīng)篩選的 df –h 命令結(jié)果。通過重寫 MyDiskMonitor 類中的方法,您能夠完全改變 disk_space 方法的意圖。

允許您重用其他類中的屬性的 Python 多重繼承是這個“MyDiskMonitor(DiskMonitor)”語句。您只需在定義新類的名稱時,將先前的類的名稱放在括號內(nèi)。一旦完成此步驟,您立即可以訪問其他類屬性來做自己希望的事情。但是樂趣不僅于此。通過添加另一個通過電子郵件來發(fā)送標記消息的方法。

也許是將其命名為 disk_alert(self),這樣就可以進一步自定義新類。這是面向?qū)ο蟮脑O(shè)計的美妙之處;它允許有經(jīng)驗的開發(fā)人員不斷重用已編寫的代碼,從而節(jié)省大量的時間。 遺憾的是,面向?qū)ο蟮木幊桃灿衅洳焕囊幻?。所有這些抽象都是以復(fù)雜性為代價的,如果抽象過度,可能會徹底地弄巧成拙。

由于 Python 多重繼承,抽象可以達到相當有害的復(fù)雜程度。您是否能夠想象只是為了編寫一個方法也要查看多個文件的情況?無論相信與否,這種情況的確會發(fā)生,并且代表了面向?qū)ο缶幊痰牟恍椰F(xiàn)實。

上述內(nèi)容就是Python中怎么創(chuàng)建多重繼承,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI