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