python类中super()和__init__()的区别

时间:2021-12-19 00:44:41

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