WEB开发网
开发学院软件开发Python 从脚本编写到面向对象的 Python 编程 阅读

从脚本编写到面向对象的 Python 编程

 2008-09-23 12:46:56 来源:WEB开发网   
核心提示: 面向对象的 Python 磁盘监视脚本#!/usr/bin/env pythonfrom subprocess import Popen, PIPEimport reclass DiskMonitor():"""Disk Monitoring Class&qu

面向对象的 Python 磁盘监视脚本

#!/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:
      line = line.strip()
      if re.search(self.pattern,line):
        print "%s %s" % (self.message,line)
if __name__ == "__main__":
  d = DiskMonitor()
  d.disk_space()

查看该代码的面向对象版本,可以看到代码变得更加抽象。有时,太多的抽象会导致设计问题,但是在此例中,它允许您将问题分离为更多可重用的部分。DiskMonitor 类具有 __init__ method,您可以在其中定义新的参数,并且 disk_space 函数现在是该类中的一个方法。

使用这种新的样式,您无需更改原始代码即可容易地重用和自定义各个部分,而使用过程代码时则通常必须更改原始代码。面向对象的设计的一个更加功能强大、通常也被过度使用的方面是继承。继承允许您在新的类中重用和自定义现有的代码。让我们在下一个示例中看看继承可能像什么样子。

上一页  1 2 3 4 5 6 7  下一页

Tags:脚本 编写 面向

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接