首页 > 技术文章 > python类中super()和__init__()的区别

xianhaiyan 2016-10-20 16:29 原文

class Base(object):     def __init__(self):        

print 'Base create'

class childB(Base):    

def __init__(self):        

print 'creat B ',        

super(childB, self).__init__()

class childA(childB,Base):    

def __init__(self):        

print 'creat A ',        

Base.__init__(self)

if __name__=="__main__":

childA()

结果:creat A  Base create

class Base(object):    

def __init__(self):        

print 'Base create'

class childA(Base):    

def __init__(self):        

print 'creat A ',        

Base.__init__(self)

class childB(childA,Base):    

def __init__(self):        

print 'creat B ',        

super(childB, self).__init__()

if __name__=="__main__":    

childB()

结果:creat B  creat A  Base create

class Base():    

def __init__(self):        

print 'Base create'

class childA(Base):    

def __init__(self):        

print 'creat A ',        

Base.__init__(self)

if __name__=="__main__":
    childA()

结果:creat A  Base create

class Base():    

def __init__(self):        

print 'Base create'

class childA(Base):    

def __init__(self):        

print 'creat B ',        

super(childA, self).__init__()

if __name__=="__main__":     

childA()

结果:

creat B
Traceback (most recent call last):
  File "D:\eclipse\test\test1.py", line 17, in <module>
    childA()
  File "D:\eclipse\test\test1.py", line 14, in __init__
    super(childA, self).__init__()
TypeError: super() argument 1 must be type, not classobj

推荐阅读