成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何進行創建Python 多重繼承

開發 后端
過程式編程通常是初學的開發人員的最自然編程風格,并且對于許多問題來說也是高度有效的。另一方面,對于創建抽象從而創建可重用的代碼來說。

Python 多重繼承可能是非常有用的方法。然而,當項目達到某種程度的復雜性之后,過程代碼通常會暴露出其根本缺陷。下面讓我們直接進入上一個示例的面向對象版本,并看看這樣有何變化。

  1. #!/usr/bin/env python  
  2.  
  3. from subprocess import Popen, PIPE  
  4. import re  
  5.  
  6. class DiskMonitor():  
  7.     """Disk Monitoring Class"""  
  8.     def __init__(self,  
  9.                 pattern="2[0-9]%",  
  10.                 message="CAPACITY WARNING",  
  11.                 cmd = "df -h"):  
  12.         self.pattern = pattern  
  13.         self.message = message  
  14.         self.cmd = cmd  
  15.  
  16.     def disk_space(self):  
  17.         """Disk space capacity flag method"""  
  18.         ps = Popen(self.cmd, shell=True,stdout=PIPE,stderr=PIPE)  
  19.         output_lines = ps.stdout.readlines()  
  20.         for line in output_lines:  
  21.             lineline = line.strip()  
  22.             if re.search(self.pattern,line):  
  23.                 print "%s %s" % (self.message,line)  
  24.  
  25. class MyDiskMonitor(DiskMonitor):  
  26.     """Customized Disk Monitoring Class"""  
  27.  
  28.     def disk_space(self):  
  29.         ps = Popen(self.cmd, shell=True,stdout=PIPE,stderr=PIPE)  
  30.         print "RAW DISK REPORT:"  
  31.         print ps.stdout.read()  
  32.  
  33. if __name__ == "__main__":  
  34.     d = MyDiskMonitor()  
  35.     d.disk_space()           

查看該代碼的面向對象版本,可以看到代碼變得更加抽象。有時,太多的抽象會導致設計問題,但是在此例中,它允許您將問題分離為更多可重用的部分。DiskMonitor 類具有 __init__ method,您可以在其中定義新的參數,并且 disk_space 函數現在是該類中的一個方法。

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

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

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

也許是將其命名為 disk_alert(self),這樣就可以進一步自定義新類。這是面向對象的設計的美妙之處;它允許有經驗的開發人員不斷重用已編寫的代碼,從而節省大量的時間。 遺憾的是,面向對象的編程也有其不利的一面。所有這些抽象都是以復雜性為代價的,如果抽象過度,可能會徹底地弄巧成拙。

由于 Python 多重繼承,抽象可以達到相當有害的復雜程度。您是否能夠想象只是為了編寫一個方法也要查看多個文件的情況?無論相信與否,這種情況的確會發生,并且代表了面向對象編程的不幸現實。

責任編輯:chenqingxiang 來源: 博客園
相關推薦

2021-05-17 14:02:38

Swift 多重排序

2009-12-08 11:34:40

WCF Windows

2010-01-20 09:32:30

C++類

2010-02-01 10:21:36

Python編碼轉換

2010-02-22 16:05:40

Python配置

2024-07-08 08:38:37

Python游戲開發

2010-02-03 13:55:51

Python 代碼

2010-02-01 14:48:43

2010-02-01 17:33:24

Python主線程

2010-03-11 17:38:20

Python中文

2010-03-15 15:11:50

Python列表

2010-02-02 16:47:12

Python主線程

2011-08-16 17:19:59

linux加密分區

2010-02-22 17:12:34

Python對象

2010-03-01 16:32:36

Python語言

2010-03-09 18:14:55

Python sock

2010-02-01 16:22:36

Python字符串操作

2010-03-01 11:06:52

Python 調試器

2010-03-15 15:45:15

Python編程語言

2010-03-12 19:29:15

python svn腳
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品影院 | 韩国av网站在线观看 | 2019精品手机国产品在线 | 日韩久久久久久 | 亚洲 精品 综合 精品 自拍 | 精品三区| 欧美激情在线播放 | 国内av在线 | 亚洲国产精品久久久久久 | 欧美男男videos| 男女视频在线观看网站 | 日本一本在线 | 欧美中文在线 | 天天干天天干 | 亚洲欧美一区二区三区在线 | 国产精品高潮呻吟久久久久 | 1000部精品久久久久久久久 | 免费毛片在线 | 精品久久电影 | 日韩欧美在 | 亚洲一区二区免费电影 | 日韩欧美视频免费在线观看 | 国产精品毛片一区二区在线看 | 国产欧美精品区一区二区三区 | 亚洲一区在线播放 | 亚洲精品粉嫩美女一区 | 狠狠干天天干 | 俺去俺来也www色官网cms | 久久精品国产精品青草 | 性国产丰满麻豆videosex | 欧洲高清转码区一二区 | 欧美另类视频 | av超碰| 久久久久久国产精品免费免费狐狸 | 欧美成视频 | 亚洲一区二区三区 | 精品一区av| 精品久久一区二区三区 | 亚洲免费在线 | 国产精品久久久乱弄 | 国产精品久久久久久久岛一牛影视 |