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
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 :
super().__init__(name)Appelle le constructeur de la classe parente.super().speak()Appelle la méthode de la classe parente.- Cela permet d'étendre les fonctionnalités de la classe parente dans la sous-classe.
Exemple 2 : Héritage multiple
Exemple
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
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