logo

Constructeur Python

Un constructeur est un type spécial de méthode (fonction) utilisé pour initialiser les instances membres de la classe.

En C++ ou Java, le constructeur porte le même nom que sa classe, mais il traite le constructeur différemment en Python. Il est utilisé pour créer un objet.

Les constructeurs peuvent être de deux types.

  1. Constructeur paramétré
  2. Constructeur non paramétré

La définition du constructeur est exécutée lorsque nous créons l'objet de cette classe. Les constructeurs vérifient également qu'il y a suffisamment de ressources pour que l'objet puisse effectuer n'importe quelle tâche de démarrage.

Création du constructeur en python

En Python, la méthode __chaleur__() simule le constructeur de la classe. Cette méthode est appelée lorsque la classe est instanciée. Il accepte le soi -keyword comme premier argument qui permet d'accéder aux attributs ou à la méthode de la classe.

Nous pouvons transmettre n'importe quel nombre d'arguments au moment de la création de l'objet de classe, en fonction du __chaleur__() définition. Il est principalement utilisé pour initialiser les attributs de classe. Chaque classe doit avoir un constructeur, même si elle s'appuie simplement sur le constructeur par défaut.

Considérons l'exemple suivant pour initialiser le Employé attributs de classe.

Exemple

 class Employee: def __init__(self, name, id): self.id = id self.name = name def display(self): print('ID: %d 
Name: %s' % (self.id, self.name)) emp1 = Employee('John', 101) emp2 = Employee('David', 102) # accessing display() method to print employee 1 information emp1.display() # accessing display() method to print employee 2 information emp2.display() 

Sortir:

 ID: 101 Name: John ID: 102 Name: David 

Compter le nombre d'objets d'une classe

Le constructeur est appelé automatiquement lorsque l'on crée l'objet de la classe. Considérez l'exemple suivant.

Exemple

 class Student: count = 0 def __init__(self): Student.count = Student.count + 1 s1=Student() s2=Student() s3=Student() print('The number of students:',Student.count) 

Sortir:

 The number of students: 3 

Constructeur Python non paramétré

Le constructeur non paramétré est utilisé lorsque l'on ne veut pas manipuler la valeur ou le constructeur qui n'a que self comme argument. Considérez l'exemple suivant.

Exemple

 class Student: # Constructor - non parameterized def __init__(self): print('This is non parametrized constructor') def show(self,name): print('Hello',name) student = Student() student.show('John') 

Constructeur paramétré Python

Le constructeur paramétré a plusieurs paramètres ainsi que le soi . Considérez l'exemple suivant.

Exemple

 class Student: # Constructor - parameterized def __init__(self, name): print('This is parametrized constructor') self.name = name def show(self): print('Hello',self.name) student = Student('John') student.show() 

Sortir:

 This is parametrized constructor Hello John 

Constructeur Python par défaut

Lorsque nous n’incluons pas le constructeur dans la classe ou oublions de le déclarer, cela devient le constructeur par défaut. Il n'effectue aucune tâche mais initialise les objets. Considérez l'exemple suivant.

Exemple

 class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display() 

Sortir:

 101 Joseph 

Plus d'un constructeur dans une seule classe

Jetons un coup d'œil à un autre scénario, que se passe-t-il si nous déclarons les deux mêmes constructeurs dans la classe.

Exemple

 class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student() 

Sortir:

 The Second Constructor 

Dans le code ci-dessus, l'objet St appelé le deuxième constructeur alors que les deux ont la même configuration. La première méthode n'est pas accessible par le St objet. En interne, l'objet de la classe appellera toujours le dernier constructeur si la classe possède plusieurs constructeurs.

Remarque : La surcharge du constructeur n'est pas autorisée en Python.

Fonctions de classe intégrées Python

Les fonctions intégrées définies dans la classe sont décrites dans le tableau suivant.

SN Fonction Description
1 getattr(obj,nom,par défaut) Il permet d'accéder à l'attribut de l'objet.
2 setattr (obj, nom, valeur) Il est utilisé pour définir une valeur particulière pour l'attribut spécifique d'un objet.
3 delattr(obj, nom) Il est utilisé pour supprimer un attribut spécifique.
4 hasattr(obj, nom) Il renvoie vrai si l'objet contient un attribut spécifique.

Exemple

 class Student: def __init__(self, name, id, age): self.name = name self.id = id self.age = age # creates the object of the class Student s = Student('John', 101, 22) # prints the attribute name of the object s print(getattr(s, 'name')) # reset the value of attribute age to 23 setattr(s, 'age', 23) # prints the modified value of age print(getattr(s, 'age')) # prints true if the student contains the attribute with name id print(hasattr(s, 'id')) # deletes the attribute age delattr(s, 'age') # this will give an error since the attribute age has been deleted print(s.age) 

Sortir:

 John 23 True AttributeError: 'Student' object has no attribute 'age' 

Attributs de classe intégrés

Outre les autres attributs, une classe Python contient également des attributs de classe intégrés qui fournissent des informations sur la classe.

Les attributs de classe intégrés sont indiqués dans le tableau ci-dessous.

SN Attribut Description
1 __dict__ Il fournit le dictionnaire contenant les informations sur l'espace de noms de la classe.
2 __doc__ Il contient une chaîne contenant la documentation de la classe
3 __nom__ Il est utilisé pour accéder au nom de la classe.
4 __module__ Il permet d'accéder au module dans lequel cette classe est définie.
5 __bases__ Il contient un tuple comprenant toutes les classes de base.

Exemple

 class Student: def __init__(self,name,id,age): self.name = name; self.id = id; self.age = age def display_details(self): print('Name:%s, ID:%d, age:%d'%(self.name,self.id)) s = Student('John',101,22) print(s.__doc__) print(s.__dict__) print(s.__module__) 

Sortir:

 None {'name': 'John', 'id': 101, 'age': 22} __main__