如果在å�ç±»ä¸éœ€è¦�çˆ¶ç±»çš„æž„é€ æ–¹æ³•å°±éœ€è¦�显å¼�åœ°è°ƒç”¨çˆ¶ç±»çš„æž„é€ æ–¹æ³•ï¼Œæˆ–è€…ä¸�é‡�å†™çˆ¶ç±»çš„æž„é€ æ–¹æ³•ã€‚
å�ç±»ä¸�é‡�写 __init__,实例化å�类时,会自动调用父类定义的 __init__。
实例
class Father(object):
def __init__(self, name):
self.name=name
print ( "name: %s" %( self.name) )
def getName(self):
return 'Father ' + self.name
class Son(Father):
def getName(self):
return 'Son '+self.name
if __name__=='__main__':
son=Son('runoob')
print ( son.getName() )
输出结果为:
name: runoob Son runoob
如果é‡�写了__init__ 时,实例化å�类,就ä¸�会调用父类已ç»�定义的 __init__ï¼Œè¯æ³•æ ¼å¼�如下:
实例
class Father(object):
def __init__(self, name):
self.name=name
print ( "name: %s" %( self.name) )
def getName(self):
return 'Father ' + self.name
class Son(Father):
def __init__(self, name):
print ( "hi" )
self.name = name
def getName(self):
return 'Son '+self.name
if __name__=='__main__':
son=Son('runoob')
print ( son.getName() )
输出结果为:
hi Son runoob
如果é‡�写了__init__ 时,è¦�ç»§æ‰¿çˆ¶ç±»çš„æž„é€ æ–¹æ³•ï¼Œå�¯ä»¥ä½¿ç”¨ super 关键å—:
super(å�类,self).__init__(å�‚æ•°1,å�‚æ•°2,....)
还有一��典写法:
父类�称.__init__(self,�数1,�数2,...)
实例
class Father(object):
def __init__(self, name):
self.name=name
print ( "name: %s" %( self.name))
def getName(self):
return 'Father ' + self.name
class Son(Father):
def __init__(self, name):
super(Son, self).__init__(name)
print ("hi")
self.name = name
def getName(self):
return 'Son '+self.name
if __name__=='__main__':
son=Son('runoob')
print ( son.getName() )
输出结果为:
name: runoob hi Son runoob
dengjianxiong
121***9565@qq.com
情况一:å�类需è¦�自动调用父类的方法:å�ç±»ä¸�é‡�写__init__()方法,实例化å�ç±»å�Žï¼Œä¼šè‡ªåŠ¨è°ƒç”¨çˆ¶ç±»çš„__init__()的方法。
情况二:å�ç±»ä¸�需è¦�自动调用父类的方法:å�ç±»é‡�写__init__()方法,实例化å�ç±»å�Žï¼Œå°†ä¸�会自动调用父类的__init__()的方法。
情况三:å�ç±»é‡�写__init__()方法å�ˆéœ€è¦�调用父类的方法:使用super关键è¯�:
super(å�类,self).__init__(å�‚æ•°1,å�‚æ•°2,....) class Son(Father): def __init__(self, name): super(Son, self).__init__(name)dengjianxiong
121***9565@qq.com