Maison > Article > développement back-end > Constructeur en Python
En Python, chaque classe a un constructeur, qui est une méthode spéciale spécifiée à l'intérieur de la classe. Le constructeur/initialiseur sera appelé automatiquement lorsqu'un nouvel objet est créé pour la classe. Lorsqu'un objet est initialisé, le constructeur attribue des valeurs aux données membres de la classe.
Il n'est pas nécessaire de définir explicitement le constructeur. Mais pour créer un constructeur, nous devons suivre les règles suivantes -
Pour une classe, il n'est permis d'avoir qu'un seul constructeur.
Le nom du constructeur doit être __init__.
Les constructeurs doivent être définis à l'aide de propriétés d'instance (spécifiez simplement le mot-clé self comme premier argument).
Il ne peut renvoyer aucune valeur sauf Aucune.
class A(): def __init__(self): pass
Considérez l'exemple ci-dessous et comprenez comment fonctionne le constructeur.
class SampleClass(): def __init__(self): print("it a sample class constructor") # creating an object of the class A = SampleClass()
it a sample class constructor
Dans le bloc ci-dessus, l'objet A est créé pour SampleClass() et pour cette instance, la méthode __init__(self) est automatiquement exécutée. De cette façon, il affiche l'instruction du constructeur.
Les constructeurs sont divisés en trois types.
Constructeur par défaut
Constructeur paramétré
Constructeur non paramétrique
Le constructeur par défaut n'est pas défini par l'utilisateur, Python crée lui-même un constructeur lors de la compilation du programme. Il n'effectue aucune tâche mais initialise l'objet.
Python génère un constructeur vide sans code. Voir exemple ci-dessous.
class A(): check_value = 1000 # a method def value(self): print(self.check_value) # creating an object of the class obj = A() # calling the instance method using the object obj.value()
1000
Vérifions le constructeur de la classe A à l'aide de la fonction dir() intégrée de Python.
dir(A) Output: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'check_value', 'value']La fonction
python dir() renvoie une liste de toutes les propriétés et méthodes de l'objet spécifié. Dans la liste ci-dessus, nous pouvons voir que le constructeur par défaut __init__ est créé pour l'objet A.
Les constructeurs paramétrés acceptent un ou plusieurs paramètres ainsi que soi. Ceci est utile lorsque vous souhaitez créer un objet avec des valeurs de propriétés personnalisées. Les constructeurs paramétrés nous permettent de spécifier les valeurs des propriétés d'un objet lors de la création d'un objet.
Voyons un exemple de classe avec un constructeur paramétré
class Family: members = 10 def __init__(self, count): self.members = count def disply(self): print("Number of members is", self.members) joy_family = Family(25) joy_family.disply()
Number of members is 25
Ici, la série d'objets Joy est créée en utilisant une valeur personnalisée de 25 au lieu d'utiliser la valeur de propriété de membre par défaut de 10. Et la valeur est disponible pour cette instance car elle est affectée à la propriété self.members.
Les constructeurs non paramétriques n'acceptent aucun paramètre sauf self. C'est utile lorsque vous souhaitez manipuler la valeur d'une propriété d'instance.
Voyons un exemple de constructeur non paramétrique.
class Player: def __init__(self): self.position = 0 # Add a move() method with steps parameter def move(self, steps): self.position = steps print(self.position) def result(self): print(self.position) player1 = Player() print('player1 results') player1.move(2) player1.result() print('p2 results') p2 = Player() p2.result()
player1 results 2 2 p2 results 0L'objet
player1 manipule la propriété "position" en utilisant la méthode move(). Et l'objet p2 accède à la valeur par défaut de la propriété "position".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!