从python2.2开始就是出行了新式类,新式类是兼容经典类的功能的。
经典类的基类搜索机制是深度优先,在多继承的时候就存在bug,而新式类的搜索机制是广度优先,基类继承自object类,多继承的时候就不会像经典类那样存在问题,Python3.x中已经都是新式类了,所有的类都是object的子类。
经典类:
class A:
def __init__(self):
print 'This is A'
def save(self):
print 'save method from A'
class B(A):
def __init__(self):
print 'This is B'
class C(A):
def __init__(self):
print 'This is C'
def save(self):
print 'save method from C'
class D(B,C):
def __init__(self):
print 'This is D'
c = D()
c.save()
新式类:
class A(object):
def __init__(self):
print 'This is A'
def save(self):
print 'save method from A'
class B(A):
def __init__(self):
print 'This is B'
class C(A):
def __init__(self):
print 'This is C'
def save(self):
print 'save method from C'
class D(B,C):
def __init__(self):
print 'This is D'
c = D()
c.save()