Invoquer le super constructeur de la classe parent en Python

Vaibhav Vaibhav 12 avril 2022
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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python Class