Menu
CoddyTech

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 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 le 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!")  # 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.

challenge icon

Défi

Moyen

Dans 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 age
  • employee.py : Contient la classe Employee qui hérite de Person
  • driver.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()
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 Programmation orientée objet

Entraînez-vous par vous-même : Compilateur Python en ligne