从脚本编写到面向对象的 Python 编程
2008-09-23 12:46:56 来源:WEB开发网面向对象的 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 函数现在是该类中的一个方法。
使用这种新的样式,您无需更改原始代码即可容易地重用和自定义各个部分,而使用过程代码时则通常必须更改原始代码。面向对象的设计的一个更加功能强大、通常也被过度使用的方面是继承。继承允许您在新的类中重用和自定义现有的代码。让我们在下一个示例中看看继承可能像什么样子。
- ››编写Linux定时处理程序
- ››面向对象的JS-私有成员变量实现方式
- ››编写Linux系统下Daemon程序的方法步骤
- ››编写组件,使用JavaScript更新UpdatePanel
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››编写多文档应用程序
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››编写自定义的 Android Preference 组件
- ››编写高效的Android代码
- ››编写 Android第一个程序 Hello, Android!
- ››编写使用root权限的android应用程序
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
更多精彩
赞助商链接