python多重继承实例,python实例
python多重继承实例,python实例
本文实例讲述了python多重继承用法,分享给大家供大家参考。具体实现方法如下:
1.mro.py文件如下:
#!/usr/bin/python # Filename:mro.py class P1: def foo(self): print 'called P1-foo' class P2: def foo(self): print 'called P2-foo' def bar(self): print 'called P2-bar' class C1(P1, P2): pass class C2(P1, P2): def bar(self): print 'called C2-bar()' class GC(C1, C2): pass
2.执行结果如下:
>>> from mro import * >>> gc = GC() >>> gc.foo() called P1-foo >>> gc.bar <bound method GC.bar of <mro.GC instance at 0xb77be2ac>> >>> gc.bar() called P2-bar >>>
3.结论:
方法解释顺序(MRO): 深度优先, 从左至右
希望本文所述对大家的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 解释器说明介绍如何创建Python多线程环境浅析Python多线程问题如何进行建立Python主线程?执行Python 解释器相关说明允许您重用......余下全文>>
interface C{
void print1();
}
interface D{
void print2();
}
interface E{
void print3();
}
interface F{
void print4();
}
interface G{
void print5();
}
class A{
void print0(){
System.out.println("00000000");
}
}
/*这是java的实现,我只知道C++可以直接多继承,C语言不是面向对象编程,下面是我给出的java语言的实现,紧供参考!!
*/
class B extends A implements C,D,E,F,G{
//通过实现接口,来实现多继承
void print1(){
print0();//继承A类的方法
.....
}
void print2(){
.....
}
void print3(){
.....
}
void print3(){
.....
}
void print4(){
.....
}
void print3(){
.....
}
void print4(){
.....
}
void print5(){
.....
}
}
相关内容
- python中__call__方法示例分析,python__call_
- 跟老齐学Python之大话题小函数(1),齐学python
- 跟老齐学Python之大话题小函数(2),齐学python
- 跟老齐学Python之重回函数,齐学python之重
- python中元类用法实例,python元类实例
- python类继承用法实例分析,python用法实例分析
- python基于queue和threading实现多线程下载实例,queuethrea
- python操作CouchDB的方法,python操作couchdb
- python实现简单的TCP代理服务器,pythontcp
- python求pi的方法,pythonpi方法
评论关闭