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