La super fonction en Python

Muhammad Waiz Khan 22 juin 2021
La super fonction en Python

Ce tutoriel expliquera le but et l’utilisation de la fonction intégrée super() en Python. L’un des concepts de base de la programmation orientée objet (POO) est l’héritage, dans lequel une classe (sous-classe) peut accéder aux propriétés et méthodes de la classe parente ou de la superclasse.

Dans les héritages multiples, une classe peut hériter des propriétés et des méthodes de plusieurs classes, ce qui signifie que la classe aura plusieurs super classes. La fonction super() est utile et principalement utilisée en cas d’héritages multiples, les détails et l’utilisation de la fonction super() avec des exemples de code seront abordés dans ce tutoriel.

Utilisez la fonction intégrée super() en Python

La fonction super() accède aux méthodes héritées surchargées dans une classe. La fonction super() est utilisée dans la classe enfant avec héritage multiple pour accéder à la fonction de la classe parent ou superclasse suivante. La fonction super() détermine la classe parent suivante en utilisant l’ordre de résolution des méthodes (MRO). Comme si le MRO est C -> D -> B -> A -> object, pour D, la fonction super() cherchera la prochaine classe parent ou méthode de superclasse dans la séquence D -> B -> A -> object.

Si la classe est une classe d’héritage unique, dans ce cas, la fonction super() est utile pour utiliser les méthodes des classes parentes sans utiliser explicitement leur nom.

La fonction super(type) renvoie un objet proxy qui appelle les méthodes de la classe parent ou sœur de l’entrée type. La syntaxe du super() est différente en Python 2 et 3, on peut utiliser la fonction super() en Python 2 pour appeler la méthode héritée mymethod() comme super(type, self).mymethod(args)et en Python 3 comme super().mymethod(args).

Examinons maintenant des exemples de codes détaillés d’utilisation de la fonction super() pour appeler les méthodes héritées de la classe enfant en Python.

Exemple de code:

class mysuper_class(object):
    def super_method(self):
        print("Method of the super class was called!")


class myclass(mysuper_class):
    def mymethod(self):
        super().super_method()


a = myclass()
a.mymethod()

Production:

Method of the super class was called

Article connexe - Python Class