#!/usr/bin/env python #coding=utf-8 #原则: 访问属性和方法时,首先在当前类中查找。如果没找到,向上查找最亲的父类; #如果仍未找到,经典类继续向上查找,而新式类先查找同胞兄弟类。 #经典类深度优先,从左到右;新式类广度优先。 #新式类会导致同胞类共同的祖先的函数重复执行,使用新的MRO算法 #使用: 注释掉(object)即新式类 class P1: #(object) def foo(self): print 'p1-foo()' def bar(self): print 'p1-bar()' class P2: #(object) def foo(self): print 'p2-foo()' def bar(self): print 'p2-bar()' class C1(P1,P2): pass class C2(P1,P2): def bar(self): print 'c2-bar()' class GC(C1,C2): pass gc = GC() gc.foo() gc.bar() 原则: 访问属性和方法时,首先在当前类中查找。如果没找到,向上查找最亲的父类;如果仍未找到,经典类继续向上查找,而新式类先查找同胞兄弟类。经典类深度优先,从左到右;新式类广度优先。 新式类会导致同胞类共同的祖先的函数重复执行,使用新的MRO算法