如何进行创建Python多重继承

 
   | |

导读:本文介绍了过程式编程通常是初学的开发人员的最自然编程风格,并且对于许多问题来说也是高度有效的。另一方面,对于创建抽象从而创建可重用的代码来说。

关键词:Python多重继承 过程式编程

 
正在加载数据...

    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:
              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()

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

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

  此输出与前面带标记的版本区别非常大,因为它只是使用顶部注入的print语句来打印的未经筛选的df–h命令结果。通过重写 MyDiskMonitor类中的方法,您能够完全改变disk_space方法的意图。

  允许您重用其他类中的属性的Python多重继承是这个“MyDiskMonitor(DiskMonitor)”语句。您只需在定义新类的名称时,将先前的类的名称放在括号内。一旦完成此步骤,您立即可以访问其他类属性来做自己希望的事情。但是乐趣不仅于此。通过添加另一个通过电子邮件来发送标记消息的方法。

  也许是将其命名为disk_alert,这样就可以进一步自定义新类。这是面向对象的设计的美妙之处;它允许有经验的开发人员不断重用已编写的代码,从而节省大量的时间。 遗憾的是,面向对象的编程也有其不利的一面。所有这些抽象都是以复杂性为代价的,如果抽象过度,可能会彻底地弄巧成拙。

  由于Python多重继承,抽象可以达到相当有害的复杂程度。您是否能够想象只是为了编写一个方法也要查看多个文件的情况?无论相信与否,这种情况的确会发生,并且代表了面向对象编程的不幸现实。


Python
 最新升级版本Python语言正在推出(二)
 最新升级版本Python语言正在推出(一)
 Google将限制Python语言的应用 开发社区热议
 如何进行创建Python多重继承

原文出处:http://developer.51cto.com/art/201002/182139.htm
 
来源:51cto    
 
 
 
 
 

Apache

 
Mozilla是网景通信公司对它的第一个网页浏览器Navigator的昵称,它也是用来发展Navigator的开源公共协作的名字。
 
表面上来看,开源软件对于中小企业(SMB)似乎意义重大。因为开源软件是免费的并且在网站上是可以自由使用的,可以帮助节省很大一部分预算。但最重要的是……
 
Apache SOAP是SOAP首个实现的SOAP规范,它是一个非常过时的SOAP实现……
 
即使是开放源Apache Axis 2.0 Web服务集合——现在是IBM WebSphere的支持者的一部分,也对所有厂商决定一个标准集合不报希望。
 
作为给Rhode岛的政府机关搭建电子政府平台的主要负责人,S. James Willis在上周展示了一个新的Web服务,并希望从一些简单的类似公众会议提醒的东西开始一场信息交换和服务的革命。

热门技术手册排行

 

随着开源技术越来越成熟,一个稍有开发经验的人通过学习就可以用开源的产品和技术构建一套可用的系统。对于从事软件开发的人员,尤其是对Java或动态语言相关领域的人来说,“开源”也许是他们最喜爱的单词。但是,很多时候我们需要的不仅仅是一个可用的系统,而是希望这个系统开发更简易、性能更高和扩展性更好等。这确实是一个令人头痛的问题。本指南很多地方都是点到为止,要深入了解相关信息的读者请借助参考资料、网站等自行挖掘。

 

本专题分六部分探讨SOA设计模式,当初设计面向服务架构的一大初衷就是降低服务间耦合度,由此提高服务的灵活性和自由度。

 

业务流程管理(business process management,bpm)不是一个新概念,甚至不是一个新名词。它是从相关的业务流程变革领域,如业务流程改进(bpi)、业务流程重组(bpr)、业务流程革新中发展起来的。流程管理技术也是从早期的工作流管理、eai、流程自动化、流程集成、流程建模、流程优化等技术中发展起来的。

 

TOAGF是一个架构框架,简而言之,TOGAF是一种协助发展,验收,运行,使用,和维护架构的工具。它是基于一个迭代(Iterative)的过程模型,支持最佳实践和一套可重用的现有架构资产。

 

云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。

 

Mashup是一个非常cool的新的应用程序种类。如果你想真正的了解它们,我们需要回过头来看看你现在的计算机,其实它就是一个非常好的帮助你理解mashup的模型。现在开源的操作系统无疑是非常好的apis的集合或应用程序编程接口,帮助开发者去构建其应用程序。计算机本身也是一个很好的为用户提供接口的例子,键盘和鼠标可以被理解为你通过计算机的接口而使用的不同的应用程序。本技术手册为读者提供了一些相关信息,如果需要深入了解mashup,读者可以借助其他参考资源。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录