Héritage Python POO : classes parent et enfant
Apprenez l'héritage en Python POO. Maîtrisez les sous-classes, les méthodes de remplacement, l'utilisation de super() et plusieurs modèles d'héritage.
Aperçu
L'héritage est l'un des piliers fondamentaux de la programmation orientée objet (POO). Il s'agit d'un mécanisme qui permet à une nouvelle classe (appelée enfant ou sous-classe) d'adopter les attributs et les méthodes d'une classe existante (appelée parent ou superclasse). Ce modèle de conception favorise la réutilisation du code, réduit la redondance et établit des relations logiques et hiérarchiques entre les différents composants de votre application.
Pour implémenter l'héritage en Python, vous transmettez le nom de la classe parent entre parenthèses lors de la définition de la classe enfant : `class Child(Parent):`. La classe enfant hérite immédiatement de toutes les méthodes et variables du parent. Si l'enfant a besoin d'un comportement personnalisé, il peut remplacer n'importe quelle méthode parent en la redéfinissant avec le même nom. À l'intérieur d'une méthode remplacée, vous pouvez toujours invoquer l'implémentation du parent en utilisant la fonction `super()` intégrée, garantissant ainsi que vous pouvez étendre plutôt que remplacer complètement la logique existante.
Contrairement à de nombreux langages typés statiquement, Python prend en charge nativement l'héritage multiple, ce qui signifie qu'une classe enfant peut hériter de plusieurs classes parent (par exemple, `class SmartDevice(Camera, Phone)) :`). Pour déterminer quelle méthode parent s'exécute en cas de conflit de noms, Python utilise un algorithme strict appelé Method Resolution Order (MRO). Comprendre comment structurer les arbres d'héritage et utiliser super() est crucial pour concevoir des architectures extensibles orientées objet.
Sortie de code et d'exécution
Création d'une classe Vehicle parent et d'une sous-classe Car enfant qui remplace l'initialisation à l'aide de super().
class Vehicle:
def __init__(self, brand, year):
self.brand = brand
self.year = year
def display_info(self):
return f"{self.year} {self.brand}"
class Car(Vehicle):
def __init__(self, brand, year, model):
# Call parent constructor
super().__init__(brand, year)
self.model = model
def display_info(self):
# Override parent method and extend it
parent_info = super().display_info()
return f"{parent_info} {self.model}"
my_car = Car("Ford", 2026, "Mustang")
print(my_car.display_info())2026 Ford MustangMise en œuvre étape par étape
- Création de classes d'exception personnalisées qui héritent d'Exception
- Création de composants d'interface utilisateur (comme les boutons) héritant d'une vue générique
- Définir des modèles de bases de données hiérarchiques (par exemple, utilisateur, employé, responsable)
Foire aux questions
Que fait super() dans le sous-classement ?
super() renvoie un objet temporaire de la classe parent, permettant d'appeler ses méthodes, ce qui est particulièrement utile pour initialiser les champs parents dans __init__.
Pouvez-vous empêcher l’héritage d’une classe ?
Python ne prend pas en charge un mot-clé « final » comme Java pour restreindre l'héritage. Conventionnellement, nous documentons l'intention de la classe ou utilisons des vérificateurs de type avec les annotations @final du module de saisie.
Sujets connexes
Une introduction complète aux classes Python, aux objets, à l'héritage et aux concepts de POO. Créez des modèles de données robustes et faites évoluer vos applications Python.
Polymorphisme Python POOMaîtrisez le polymorphisme en Python. Apprenez à écrire du code flexible et faiblement couplé à l'aide du typage duck, du remplacement de méthode et des classes de base abstraites.
Ressources Python recommandées
Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.
Comment trier une liste en Python
Apprenez à trier une liste en Python à l'aide de la méthode sort() et de la fonction sorted(). Découvrez des exemples de tri de clés personnalisé et d’ordre inverse.
Aide-mémoire sur les méthodes de chaîne Python
Un guide de référence complet pour la manipulation des chaînes Python. Maîtrisez le formatage, la recherche, le fractionnement, le remplacement et la vérification des propriétés des chaînes.
Python vs JavaScript : quel langage de programmation est le meilleur ?
Une comparaison complète entre Python et JavaScript. Explorez les différences de syntaxe, les performances, les cas d'utilisation (backend et frontend) et des exemples de codage.