Si en una subclase se necesita el constructor de la clase padre, se debe llamar explícitamente al constructor de la clase padre, o no sobrescribir el constructor de la clase padre.
La subclase no sobrescribe__init__, al instanciar la subclase, se llamará automáticamente a lo definido por la clase padre__init__。
Ejemplo
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('ejemplo')
print ( son.getName() )
El resultado de salida es:
name: ejemplo Son ejemplo
Si se sobrescribe__init__, al instanciar la subclase, no se llamará a lo ya definido por la clase padre__init__, el formato de sintaxis es el siguiente:
Ejemplo
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('ejemplo')
print ( son.getName() )
El resultado de salida es:
hi Son ejemplo
Si se sobrescribe__init__y se desea heredar el constructor de la clase padre, se puede usarsuperpalabra clave:
super(子类,self).__init__(参数1,参数2,....)
También existe una forma clásica de escribir:
父类名称.__init__(self,参数1,参数2,...)
Ejemplo
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('ejemplo')
print ( son.getName() )
El resultado de salida es:
name: ejemplo hi Son ejemplo