La fonction super()
Fait partie de la section Programmation orientée objet du Journey Python de Coddy. Leçon 18 sur 64.
La fonction super() permet à une classe enfant d’appeler des méthodes de sa classe parente. Cela vous permet d’étendre les fonctionnalités de la classe parente plutôt que de les remplacer complètement.
Voici un exemple d’utilisation de super() dans le constructeur :
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Appeler le __init__ du parent
self.breed = breed
print(f"Dog breed set: {breed}")Créez un objet chien :
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Sortie :
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverUtilisez super() pour étendre les méthodes parentes :
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Appeler d'abord la méthode du parent
print("Woof!") # Ajouter le comportement spécifique au chienAppelez la méthode étendue :
buddy = Dog()
buddy.make_sound()Sortie :
Generic animal sound
Woof!Sans super(), vous perdriez la fonctionnalité du parent :
class Cat(Animal):
def make_sound(self):
print("Meow!") # Seul le son du chat, méthode parente ignorée
cat = Cat()
cat.make_sound()Sortie :
Meow!Point clé : utilisez super() pour appeler les méthodes de la classe parente depuis les classes enfants. Cela vous permet d’étendre les fonctionnalités plutôt que de les remplacer complètement. Les utilisations courantes incluent l’appel des méthodes __init__ de la classe parente et l’extension du comportement de la classe parente.
Défi
MoyenDans ce défi, tu vas implémenter une hiérarchie de classes Person et Employee utilisant l’héritage.
person.py: Contient la classe Person avec les attributs name et ageemployee.py: Contient la classe Employee qui hérite de Persondriver.py: Fichier principal pour tester ton implémentation
Chaque fichier contient des commentaires TODO détaillés pour te guider dans l’implémentation.
Essayez vous-même
# TODO: Importer la classe Person depuis person.py
# TODO: Importer la classe Employee depuis employee.py
def main():
# TODO: Créer un objet Person avec le nom "Alice" et l'âge 30
person = None
# TODO: Créer un objet Employee avec le nom "Bob", l'âge 35 et le poste "Developer"
employee = None
# TODO: Appeler la méthode introduce() sur l'objet Person
# Expected output: "Hi, I'm Alice and I'm 30 years old"
# TODO: Afficher une ligne vide pour l'espacement - print()
# TODO: Appeler la méthode introduce() sur l'objet Employee
# Sortie attendue :
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation orientée objet
1Les fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe paramètre selfMéthodesAttributsMéthode constructeur (__init__)Récapitulatif - Calculatrice simple4Héritage
Héritage de baseLa fonction super()Redéfinition de méthodeHéritage multipleOrdre de résolution des méthodesRécapitulatif - Hiérarchie des employés7Méthodes spéciales
Introduction aux méthodes magiquesSurcharge d'opérateursMéthodes magiques de conteneurRécapitulatif - Liste personnalisée10Patrons de conception, Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron Strategy2Décorateurs
Introduction aux décorateursDécorateur de propriétéDécorateur de méthode statiqueDécorateur de méthode de classe5Polymorphisme
Retour sur la redéfinition de méthodeDuck TypingClasses et méthodes abstraitesConception d'interfacesRécapitulatif - Calculateur de formes8Concepts avancés de la POO
Composition vs HéritageMixinsMéthodes statiques et de classeDécorateurs de classeGestionnaires de contexte11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Propriétés de classe
Variables d'instance vs variables de classeDécorateurs de propriétéAttributs privésRécapitulatif - Gestionnaire de compte bancaireEntraînez-vous par vous-même : Compilateur Python en ligne