Invoquer le super constructeur de la classe parent en Python
L’héritage est un concept puissant de programmation orientée objet en informatique qui nous aide à éviter d’écrire du code redondant et va bien avec la règle d’or DRY de la programmation (Don't repeat yourself
). En utilisant l’héritage, une classe peut hériter de toutes les propriétés et fonctions d’une autre classe. La classe dont la fonctionnalité est héritée est la classe parent, et les classes qui héritent de la fonctionnalité sont des classes enfants.
L’héritage aide les programmeurs et les développeurs à écrire du code évolutif, réutilisable et maintenable, ce qui améliore la productivité et l’efficacité.
Pour hériter de tous les attributs et méthodes, nous devons exécuter le constructeur de la classe parent à partir des classes enfants. Dans cet article, nous allons apprendre à invoquer le super constructeur de la classe parent en Python.
Invoquer le super constructeur de la classe parent en Python
Le constructeur de la classe mère ou le super constructeur est invoqué dans les constructeurs des classes filles. La syntaxe pour le même est la suivante.
super().__init__(*args, **kwargs)
Tous les arguments requis par la classe parente sont passés à l’intérieur de la méthode __init__()
. Dans la syntaxe ci-dessus, *args, **kwargs
couvre tous les arguments, mais on peut aussi mentionner individuellement tous les arguments comme suit.
super().__init__(argument1, argument2, argument3, ...)
Maintenant que nous en avons fini avec la théorie, comprenons le concept de manière pratique. Reportez-vous au code Python suivant pour comprendre le concept d’héritage et comment appeler un super constructeur.
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_name(self):
return self.name
def set_name(self, name):
if isinstance(name, str):
self.name = name
def get_age(self):
return self.age
def set_age(self, age):
if isinstance(age, int):
self.age = age
def get_gender(self):
return self.gender
def set_gender(self, gender):
if isinstance(gender, str):
self.gender = gender
class Student(Person):
def __init__(self, name, age, gender, roll_number):
super().__init__(name, age, gender) # Important
self.roll_number = roll_number
def get_roll_number(self):
return self.roll_number
def set_roll_number(self, roll_number):
if isinstance(roll_number, int):
self.roll_number = roll_number
adam = Student("Adam", 21, "M", 5)
emma = Student("Emma", 23, "F", 18)
print("Name:", adam.get_name())
print("Age:", adam.get_age())
print("Gender:", adam.get_gender())
print("Roll Number:", adam.get_roll_number())
print()
print("Name:", emma.get_name())
print("Age:", emma.get_age())
print("Gender:", emma.get_gender())
print("Roll Number:", emma.get_roll_number())
Production :
Name: Adam
Age: 21
Gender: M
Roll Number: 5
Name: Emma
Age: 23
Gender: F
Roll Number: 18
La classe Person
est la classe parente et la classe Student
est la classe enfant. Les classes parent et enfant ont des setters et des getters pour tous ses attributs. La classe enfant hérite de tous les attributs et méthodes de la classe parent. Cette instruction super().__init__(name, age, gender)
invoquait le constructeur de la classe Person
. Notez qu’il est nécessaire d’invoquer le constructeur de la classe parente ; sinon, le code cassera.