python類中super()和__init__()的區別


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM