Héritage Python
- Page précédente Classe/Objet Python
- Page suivante Iteration Python
Héritage Python
L'héritage nous permet de définir une classe qui hérite de toutes les méthodes et attributs d'une autre classe.
Classe parenteEst une classe héritée, également appelée classe de base.
Sous-classeEst une classe dérivée d'une autre classe, également appelée classe dérivée.
Créer une classe parente
Toute classe peut être une classe parente, donc la syntaxe est la même que pour créer toute autre classe :
Instance
Créer une classe nommée Personne, contenant les attributs firstname et lastname ainsi que la méthode printname :
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) # Utiliser Person pour créer un objet et exécuter la méthode printname : x = Person("Bill", "Gates") x.printname()
Créer une sous-classe
Pour créer une classe héritant des fonctionnalités d'autres classes, envoyez le parent en tant que paramètre lors de la création de la sous-classe :
Instance
Créer une classe nommée Student qui héritera des attributs et des méthodes de la classe Person :
class Student(Person): pass
Remarque :Si vous ne souhaitez pas ajouter d'autres attributs ou méthodes à cette classe, utilisez pass
Cléword.
Maintenant, la classe Student possède les mêmes attributs et méthodes que la classe Person.
Instance
Créer un objet de la classe Student et exécuter la méthode printname :
x = Student("Elon", "Musk") x.printname()
Ajouter __init__()
Jusqu'à présent, nous avons créé une sous-classe qui hérite des attributs et des méthodes de la classe parent.
Nous voulons ajouter __init__()
Ajouter une fonction à la sous-classe (pas pass
Cléword).
Remarque :Chaque fois que vous utilisez la classe pour créer un nouveau objet, la fonction __init__() est appelée automatiquement.
Instance
Ajouter une fonction __init__() pour la classe Student :
class Student(Person): def __init__(self, fname, lname): # Ajouter des attributs, etc.
Lorsque vous ajoutez une fonction __init__(), la sous-classe ne héritera plus de la fonction __init__() du parent.
Remarque :La fonction __init__() de l'enfant couvre l'héritage de la fonction __init__() du parent.
Pour conserver l'héritage de la fonction __init__() du parent, ajoutez l'appel à la fonction __init__() du parent :
Instance
class Student(Person): def __init__(self, fname, lname): Person.__init__(self, fname, lname)
Maintenant que nous avons ajouté avec succès la fonction __init__() et conservé l'héritage de la classe parent, nous sommes prêts à ajouter des fonctionnalités à la fonction __init__().
L'utilisation de la fonction super()
Python a également super()
La fonction, cela permettra à la sous-classe d'hériter de toutes les méthodes et attributs de la classe parent :
Instance
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname)
En utilisant super()
La fonction, vous n'avez pas besoin d'utiliser le nom de l'élément parent, elle héritera automatiquement des méthodes et des attributs de l'élément parent.
Ajouter des attributs
Instance
Ajouter un nom graduationyear
ajouter les attributs à Student
Classe :
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019
Dans cet exemple, 2019 devrait être une variable et être passée à la classe Student lors de la création de l'objet student. Pour cela, ajoutez un autre paramètre à la fonction __init__() :
Instance
Ajouter year
Paramètres, et passez la bonne année lors de la création de l'objet :
class Student(Person): def __init__(self, fname, lname, year) : super().__init__(fname, lname) self.graduationyear = year x = Student("Elon", "Musk", 2019)
Ajouter une méthode
Instance
Ajouter un nom welcome
Ajouter la méthode à la classe Student :
class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year def welcome(self): print("Bienvenue", self.firstname, self.lastname, "à la classe de", self.graduationyear)
Astuce :Si vous ajoutez une méthode portant le même nom que la méthode de la classe parente dans la sous-classe, vous couvrirez l'héritage de la méthode parente.
- Page précédente Classe/Objet Python
- Page suivante Iteration Python