Fonction Python super()

Fonctions intégrées de Python3


super()C’est une fonction intégrée de Python utilisée pour appeler les méthodes de la classe parente (superclasse).

Dans l’héritage de classe,super()il permet d’appeler les méthodes de la classe parente, permettant la réutilisation du code et l’extension des méthodes. C’est une fonction très importante dans la programmation orientée objet en Python.

Définition du mot: superIl signifie « super », désignant ici la classe parente ou la superclasse.


Syntaxe de base et paramètres

Format de syntaxe

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

Description du paramètre

  • Type de paramètre:
    • Type: class
    • Description : La classe pour laquelle obtenir le proxy de la classe parente.
  • Paramètre object-or-type:
    • Type : objet ou classe
    • Description : Doit être une instance ou une sous-classe du type.

Description de la fonction

  • Valeur de retour: Renvoie un objet proxy utilisé pour appeler des méthodes de la classe parente.
  • Fonctionnalité: Prend en charge l'ordre de résolution des méthodes (MRO) et gère correctement l'héritage multiple.

Exemples

Exemple 1 : Appel du constructeur de la classe parente dans une sous-classe

Exemple

# Classe parente
class Animal:
    def __init__(self, name):
        self.name = name
        print(f"Animal {self.name} est né")

    def speak(self):
        print("L'animal émet un son")

# Sous-classe
class Dog(Animal):
    def __init__(self, name, breed):
        # Appeler __init__ de la classe parente
        super().__init__(name)
        self.breed = breed
        print(f"La race est {self.breed}")

    def speak(self):
        # Appeler la méthode de la classe parente
        super().speak()
        print("Woof!")

# Test
dog = Dog("Little White", "Husky")
# Sortie :
# L'animal Little White est né
# La race est Husky

dog.speak()
# Sortie :
# L'animal émet un son
# Wouf !

Sortie attendue :

The animal Xiaobai was born
Breed: Husky
The animal makes sounds
Woof woof!

Analyse du code :

  1. super().__init__(name)Appelle le constructeur de la classe parente.
  2. super().speak()Appelle la méthode de la classe parente.
  3. Cela permet d'étendre les fonctionnalités de la classe parente dans la sous-classe.

Exemple 2 : Héritage multiple

Exemple

# Exemple d'héritage multiple
classe A:
    def method(self):
        print("A.method")

classe B(A):
    def method(self):
        print("B.method")
        super().method()  # Appeler A.method

classe C(A):
    def method(self):
        print("C.method")
        super().method()  # Appeler A.method

classe D(B, C):
    def method(self):
        print("D.method")
        super().method()  # Appeler dans l'ordre MRO

# MRO: D -> B -> C -> A
d = D()
d.method()
# Sortie :
# D.method
# B.method
# C.method
# A.method

# Voir MRO
print(D.__mro__)

Sortie attendue :

D.method
B.method
C.method
A.method
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

Analyse du code :

  • super()Appelée selon le MRO (Method Resolution Order).
  • Cela garantit la justesse de l'héritage multiple.

Exemple 3 : Sans paramètres (recommandé)

Exemple

# Utilisation recommandée de Python 3 : aucun paramètre nécessaire
class Parent:
    def greet(self, name):
        return f"Bonjour, {name} !"

class Child(Parent):
    def greet(self, name):
        # Appeler la méthode de la classe parente et l'étendre
        message = super().greet(name)
        return message + " Welcome back!"

child = Child()
print(child.greet("Tom"))
# Output: Hello, Tom! Welcome back!

Sortie attendue :

L'exécution dans un environnement réel affichera le message d'accueil étendu.

super()C'est une fonction clé pour implémenter l'héritage de classes et le polymorphisme en Python.


Fonctions intégrées de Python3


Autres extensions