Si le constructeur de la classe parente est nécessaire dans une sous-classe, vous devez explicitement appeler le constructeur de la classe parente, ou ne pas redéfinir le constructeur de la classe parente.

La sous-classe ne redéfinit pas__init__, lors de l'instanciation d'une sous-classe, elle appellera automatiquement le__init__ défini dans la classe parente。

Exemple

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('example') print ( son.getName() )

Le résultat de sortie est:

name: example
Son example

Si vous redéfinissez__init__, lors de l'instanciation de la sous-classe, celle-ci n'appellera pas le__init__déjà défini de la classe parente, le format syntaxique est le suivant :

Exemple

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('example') print ( son.getName() )

Le résultat de sortie est:

hi
Son example

Si vous redéfinissez__init__, pour hériter du constructeur de la classe parente, vous pouvez utilisersupercomme mot-clé :

super(子类,self).__init__(参数1,参数2,....)

Il existe aussi une façon classique de l'écrire :

父类名称.__init__(self,参数1,参数2,...)

Exemple

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('example') print ( son.getName() )

Le résultat de sortie est:

name: example
hi
Son example