Menu
Coddy logo textTech

La fonction super()

Fait partie de la section Object Oriented Programming 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 parentes 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)  # Appelle 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 Retriever

Utilisez 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 un comportement spécifique au chien

Appelez 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!")  # Uniquement le cri du chat, la méthode parente est ignorée

cat = Cat()
cat.make_sound()

Sortie :

Meow!

Point clé : utilisez super() pour appeler les méthodes de la classe parente à partir des 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__ parentes et l'extension du comportement parent.

challenge icon

Défi

Moyen

Dans ce défi, vous allez implémenter une hiérarchie de classes Person et Employee en utilisant l'héritage.

  • person.py: Contient la classe Person avec les attributs name et age
  • employee.py: Contient la classe Employee qui hérite de Person
  • driver.py: Fichier principal pour tester votre implémentation

Chaque fichier contient des commentaires TODO détaillés pour vous guider tout au long de l'implémentation.

Aide-mémoire

La fonction super() permet à une classe enfant d'appeler des méthodes de sa classe parente, étendant ainsi la fonctionnalité plutôt que de la remplacer.

Utilisation de super() dans les constructeurs :

class Animal:
    def __init__(self, name):
        self.name = name

class Dog(Animal):
    def __init__(self, name, width):
        super().__init__(name)  # Appelle le __init__ du parent
        self.breed = breed

Utilisation de super() pour étendre des méthodes :

class Animal:
    def make_sound(self):
        print("Generic animal sound")

class Dog(Animal):
    def make_sound(self):
        super().make_sound()  # Appelle d'abord la méthode du parent
        print("Woof!")        # Ajoute un comportement spécifique à l'enfant

Sans super() : Les méthodes de l'enfant remplacent complètement la fonctionnalité du parent au lieu de l'étendre.

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
    # Résultat attendu : "Hi, I'm Alice and I'm 30 years old"
    
    # TODO : Imprimer une ligne vide pour l'espacement - print()
    
    # TODO : Appeler la méthode introduce() sur l'objet Employee
    # Résultat attendu : 
    # "Hi, I'm Bob and I'm 35 years old"
    # "I work as a Developer"

if __name__ == "__main__":
    main()
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Object Oriented Programming