Skip to content

Instantly share code, notes, and snippets.

@gabigab117
Created January 4, 2025 11:10
Show Gist options
  • Save gabigab117/664810c888521df56a82c50966b9e3f7 to your computer and use it in GitHub Desktop.
Save gabigab117/664810c888521df56a82c50966b9e3f7 to your computer and use it in GitHub Desktop.
Init subclass

Méthode arrivée avec Python 3.6 pour personnaliser la création de sous-classes. Cette méthode est appelée automatiquement quand une sous classes est crées.

  • Personnaliser le comportement de l'héritage
  • Ajouter des fonctions aux sous-classes
class Animal:
    # Cette méthode est appelée automatiquement quand une classe hérite de Animal
    def __init_subclass__(cls, cri="", **kwargs):
        super().__init_subclass__(**kwargs)
        
        # On donne automatiquement une voix à chaque animal
        cls.cri = cri # Attribut de classe sera créé pour chaque classe héritant de Animal
        
        # On définit d'abord la fonction qui deviendra une méthode
        def faire_du_bruit(self):
            return f"Je fais {self.cri} !"
            
        cls.faire_du_bruit = faire_du_bruit # La fonction devient une méthode pour chaque classe héritant de Animal

# On crée différents animaux, chacun avec son cri
class Chien(Animal, cri="wouf"):
    pass

class Chat(Animal, cri="miaou"):
    pass

# Maintenant on peut créer et utiliser nos animaux
mon_chien = Chien()
print(mon_chien.faire_du_bruit())  # Affiche : "Je fais wouf !"

mon_chat = Chat()
print(mon_chat.faire_du_bruit())   # Affiche : "Je fais miaou !"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment