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.
- Constructeur paramétré
- 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__