Python Fonction super()

Python 内置函数Fonctions intégrées de Python


Description

super()La fonction est utilisée pour appeler une méthode de la classe parente (superclasse).

super()Elle est utilisée pour résoudre les problèmes d'héritage multiple. Appeler directement une méthode de la classe parente avec le nom de la classe convient pour l'héritage simple, mais avec l'héritage multiple, cela implique divers problèmes tels que l'ordre de résolution des méthodes (MRO), les appels répétés (héritage en diamant), etc.

MRO est la table d'ordre de résolution des méthodes d'une classe, qui est en fait la table d'ordre utilisée lors de l'héritage des méthodes de la classe parente.

Syntaxe

Voici la syntaxe de la méthode super() :

super(type[, object-or-type])

Parameters

  • type -- classe.
  • object-or-type -- classe, généralement self

Une différence entre Python3.x et Python2.x est : Python 3 peut directement utilisersuper().xxxau lieu desuper(Class, self).xxx :

Exemple Python3.x :

class A: def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super().add(x) b = B() b.add(2) # 3

Exemple Python2.x :

#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): # Python2.x pensez à hériter de object def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super(B, self).add(x) b = B() b.add(2) # 3

Valeur de retour

Aucun.


Exemple

Ce qui suit montre un exemple d'utilisation de la fonction super :

Exemple

#!/usr/bin/python # -*- coding: UTF-8 -*- class FooParent(object): def __init__(self): self.parent = 'I\'m le parent.' print ('Parent') def bar(self,message): print ("%s de Parent" % message) class FooChild(FooParent): def __init__(self): # super(FooChild,self) trouve d'abord la classe parente de FooChild (c'est-à-dire la classe FooParent), puis convertit l'objet de la classe FooChild en un objet de la classe FooParent super(FooChild,self).__init__() print ('Child') def bar(self,message): super(FooChild, self).bar(message) print ('Fonction bar de Child') print (self.parent) if __name__ == '__main__': fooChild = FooChild() fooChild.bar('HelloWorld')

Résultat de l'exécution :

Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.

Python 内置函数Fonctions intégrées de Python

Autres extensions