Python >> Tutoriel Python >  >> Python

Qu'est-ce qu'un constructeur en Python ?

    Chaque langage de programmation orienté objet prend en charge le concept de classe et d'objets pour implémenter les propriétés de la programmation orientée objet. Et en tant que langage de programmation orienté objet, Python prend également en charge les classes et les objets.

    En utilisant la syntaxe de classe, nous pouvons suivre ou utiliser les propriétés des POO telles que l'abstraction de données, l'héritage, l'encapsulation de données et le polymorphisme. Et lorsque nous parlons spécifiquement de classe et d'objet, l'un des principaux sujets que chaque programmeur apprend ou doit connaître est le constructeur.

    Tous les langages de programmation qui suivent le principe de programmation orientée objet prennent en charge le concept de constructeur, que vous parliez de C++, Java ou Python. Cependant, la déclaration du constructeur en Java et C++ est différente de Python, mais le concept global est le même. Avant de commencer avec le constructeur Python, vous devez savoir ce que sont les classes et les objets en Python.

    Que sont les classes en Python ?

    Une classe n'est rien d'autre qu'un plan pour une structure ou un objet. Qu'est-ce que ça veut dire? Si nous définissons une classe en termes simples, nous pouvons dire qu'une classe est comme un cadre pour un objet qui ne définit que certaines règles. C'est comme avoir un plan écrit sur du papier ordinaire qui définit certaines fonctions (méthodes) et valeurs (attributs).

    Avec l'aide de la classe, nous pouvons facilement définir beaucoup de choses en utilisant la programmation. Par exemple, nous pouvons définir un plan pour un homme, une voiture, un bus, un animal, etc., et suivre, nous pouvons définir leur fonction et leurs valeurs.

    Syntaxe

    class class_name:
        ....

    Exemple

    class Car:
        name = "Toyota"
    
        def run(self):
            print(f"{self.name} is running")

    Maintenant, nous avons un class appelé Car, avec name, attribut et run() méthode. Les variables ou valeurs définies à l'intérieur d'une classe sont appelées attributs de classe et les fonctions sont appelées méthodes de classe. Même après avoir défini une classe, elle n'apportera aucune action au programme et à la mémoire jusqu'à ou à moins que, comme dit, il ne s'agit que d'un plan sans existence. Pour utiliser la classe Rahul et ses valeurs, nous devons définir son objet.

    Que sont les objets en Python ?

    Un objet est une instance d'une classe et une classe peut avoir plusieurs objets. L'objet est la vraie affaire; c'est une chose qui est capable d'accomplir des tâches. Nous pouvons dire qu'une classe est le plan d'une voiture et qu'une instance est une voiture réelle avec une carrosserie solide et toutes les fonctionnalités qu'un client achète.

    Pour créer un objet d'une classe, on utilise la syntaxe suivante :

    Syntaxe

    obj_name = Class_Name()

    Exemple

    Utilisons la classe Car ci-dessus et créons son objet.

    class Car:
        name = "Toyota"
    
        def run(self):
            print(f"{self.name} is running")
    
    # create object
    rahul_car = Car()
    
    # access car name property
    print("Car Name: ", rahul_car.name)
    
    # access car run methods 
    rahul_car.run()
    

    Sortie

    Car Name: Toyota
    Toyota is running

    Qu'est-ce qu'un constructeur (__init__) en Python ?

    Un constructeur est une méthode spéciale définie dans la classe qui est automatiquement appelée lorsque nous initialisons ou définissons l'objet de classe. Généralement, pour appeler une méthode de classe, nous utilisons l'objet de classe suivi de l'opérateur point et du nom de la méthode, mais la classe du constructeur est automatiquement invoquée lors de l'initialisation de l'objet. La méthode du constructeur python a une syntaxe spéciale, et c'est l'une des méthodes dunder.

    Syntaxe

    def __init__(self):
        ......
    

    Exemple

    class Demo:
        # constructor
        def __init__(self):
            print("I am inside the constructor method")
    
        def method1(self):
            print("I am inside the method1")
    
        def method2(self):
            print("I am inside the method2")
    
    # initialize the Demo object
    obj = Demo()
    

    Sortie

    I am inside the constructor method

    Briser le code

    Dans l'exemple ci-dessus, nous avons défini une classe par nom Demo et il a 3 méthodes __init__(self) , method1(self) et method(2) , mais quand on initialise son objet obj = Demo() il appelle automatiquement le __init__() méthode.

    C'est parce que __init__() définit la méthode du constructeur pour la classe Demo() et, en tant qu'état de la fonctionnalité, la méthode du constructeur est automatiquement exécutée lorsque l'objet de classe est créé. Pour le reste des méthodes normales, nous pouvons appeler celles qui utilisent le nom de l'objet suivi de l'opérateur point et du nom de la méthode.

    Pourquoi utiliser un constructeur en Python ?

    Comme la méthode constructeur est automatiquement invoquée lorsqu'un nouvel objet de classe est créé, nous utilisons cette fonctionnalité de classe pour l'initialisation précoce des attributs de classe. L'idée même de définir une méthode constructeur afin que nous puissions initialiser les valeurs initiales des attributs de la classe lors de la création de l'objet.

    Comme la méthode normale, la méthode du constructeur peut également accepter des arguments, donc lorsque nous définissons ou initialisons un objet de classe, nous pouvons passer des valeurs d'argument avec le nom de la classe, et il ira au __init__(self) méthode constructeur.

    Exemple

    class CarDetail:
        # constructor
        def __init__(self, owner, car_name, number_plate):
            # attributes
            self.owner = owner
            self.car_name = car_name
            self.number_plate = number_plate
    
        # method
        def register_detail(self):
            print(f"This {self.car_name} with [{self.number_plate}] belongs to {self.owner}")
    
    # initilize the first object
    rahul_car = CarDetail("Rahul", "Toyota Grand", "DL-FG-45E")
    
    # initilize the second object
    rohan_car = CarDetail("Rohan", "Honda City", "DL-FF-45H")
    
    # access rahul car details
    rahul_car.register_detail()
    
    # access rohan car details
    rohan_car.register_detail()
    

    Sortie

    This Toyota Grand with [DL-FG-45E] belongs to Rahul
    This Honda City with [DL-FF-45H] belongs to Rohan

    Derrière le code

    Pour les deux objets rahul_car et rohan_car nous avons la même classe, mais lors de l'initialisation de leur objet, nous passons des valeurs différentes au __init__(self) méthode. Pour rahul_car objet nous passons ("Rahul", "Toyota Grand", "DL-FG-45E") valeurs des paramètres et pour rohan_car on passe le ("Rohan", "Honda City", "DL-FF-45H") valeurs. Et quand nous avons fait cela, le __init__(self) , a appelé à la fois l'objet et a initialisé les valeurs de différence de valeurs pour eux.

    Conclusion

    Le constructeur est l'une des principales propriétés de la classe et des objets. Un constructeur est une méthode spéciale qui est automatiquement appelée pour un objet lorsque l'objet est créé. Généralement, le constructeur est utilisé pour initialiser certaines valeurs de l'objet lorsque l'objet est créé. Il n'est pas obligatoire de définir une méthode constructeur pour chaque classe, c'est une fonctionnalité qui a ses usages, et nous pouvons définir et utiliser notre classe et notre objet sans même définir la méthode constructeur.