Maison > Article > développement back-end > Introduction à l'utilisation du constructeur
La classe fait référence à : une définition qui décrit une chose, qui est un concept abstrait
L'instance fait référence à : un individu spécifique de ce genre de chose, qui est une chose spécifique
Par exemple :
"Personne" est une classe. "Zhang San" est un exemple spécifique d'êtres humains
La même chose est vraie lors de la programmation Vous définissez d'abord vous-même une "classe". Lorsque vous avez besoin de l'utiliser, utilisez la définition de "classe" pour créer une. exemple précis.
L'utilisation de la définition d'une classe pour créer une instance est appelée instanciation d'une classe.
Le processus d'instanciation consiste à appeler le constructeur de la classe pour terminer l'allocation des données de l'instance
Ce qui suit est un exemple de machine à laver :
Il s'agit d'une simple machine à laver manuelle avec Classe de rondelle d'instanciation :
1 #class Washer: 2 class Washer:#定义一个Washer类 3 4 def __init__(self): #这是定义类的构造函数,也是一个特殊的实例方法 5 self.water=0 #实例的属性(变量) 6 self.scour=0 7 8 def add_water(self,water):#实例的方法(函数),可以接受实例化后传过来的参数给类内实例变量,又因为实例继承了类的属性和方法,所以 9 #相当于传递给了类的实例化对象的实例变量10 print('Add water:',water)11 self.water=water#在类的方法内引用实例变量用 self.属性名12 13 def add_scour(self,scour):14 self.scour=scour15 print('Add scour:',scour)16 17 def start_wash(self):18 print('Start wash...')19 20 if __name__=='__main__':21 w=Washer()#类的实例化22 w.add_water(10)#传递参数到实例变量23 w.add_scour(2)24 w.start_wash()
Résultat de l'exécution :
Méthodes d'instance définies dans le besoin de la classe à définir manuellement Ajoutez le paramètre self (comme à la ligne 4), mais vous n'avez pas besoin d'ajouter manuellement le paramètre self lors de l'appel de cette méthode après l'instanciation de la classe, python l'ajoutera automatiquement, comme à la ligne 22.
La méthode d'instanciation est w=Washer(). On voit qu'une parenthèse doit être ajoutée après le cours.
En dehors de la classe, vous pouvez appeler la méthode d'instance définie dans la classe en utilisant le nom d'instance.method name (), tel que
w.add_scour(2),必要的时候加上参数。
Changeons le programme et faisons-le Machine à laver semi-automatique, c'est-à-dire qu'au sein de la classe, les méthodes s'appellent.
washa.py :
1 class Washer: 2 3 def __init__(self): 4 self.water=0 5 self.scour=0 6 7 def set_water(self,water): 8 self.water=water 9 self.add_water()10 11 def set_scour(self,scour):12 self.scour=scour13 self.add_scour()#在类内调用函数,用 self.方法名14 15 def add_water(self):16 print('Add water:',self.water)17 18 def add_scour(self):19 print('Add scour:',self.scour)20 21 def start_wash(self):22 print('Start wash...')23 24 if __name__=='__main__':25 w=Washer()26 w.set_water(10)27 w.set_scour(2)28 w.start_wash()29
peut également être modifié en :
1 class Washer: 2 3 def __init__(self): 4 self.water=0 5 self.scour=0 6 7 def set_water(self,water): 8 self.water=water 9 10 def set_scour(self,scour):11 self.scour=scour 12 13 def add_water(self):14 print('Add water:',self.water)15 16 def add_scour(self):17 print('Add scour:',self.scour)18 19 def start_wash(self):20 self.add_water()21 self.add_scour()22 print('Start wash...')23 24 if __name__=='__main__':25 w=Washer()26 w.set_water(10)27 w.set_scour(2)28 w.start_wash()
Résultat d'exécution :
En effectuant les modifications suivantes, les utilisateurs peuvent laver les vêtements sans régler le volume d'eau et de détergent de la machine à laver :
1 class Washer: 2 3 def __init__(self): 4 self.water=10#将实例属性修改为默认的标准洗衣程序需要的量 5 self.scour=2 6 7 def set_water(self,water): 8 self.water=water 9 10 def set_scour(self,scour):11 self.scour=scour 12 13 def add_water(self):14 print('Add water:',self.water)15 16 def add_scour(self):17 print('Add scour:',self.scour)18 19 def start_wash(self):20 self.add_water()21 self.add_scour()22 print('Start wash...')23 24 if __name__=='__main__':25 w=Washer()26 ## w.set_water(10) #这两行代码注释掉,代表用户不必设置水和洗涤剂量27 ## w.set_scour(2)28 w.start_wash()29
Mais dans ce cas, seulement 10L d'eau et 2L de détergent peuvent être ajoutés, ce qui n'est pas bon et doit être amélioré. Utilisez le constructeur.
1 class Washer: 2 3 def __init__(self,water=10,scour=2): 4 self.water=water 5 self.scour=scour 6 7 def set_water(self,water): 8 self.water=water 9 10 def set_scour(self,scour):11 self.scour=scour 12 13 def add_water(self):14 print('Add water:',self.water)15 16 def add_scour(self):17 print('Add scour:',self.scour)18 19 def start_wash(self):20 self.add_water()21 self.add_scour()22 print('Start wash...')23 24 if __name__=='__main__':25 w=Washer()26 w.start_wash()27 28 wb=Washer(100,10)29 wb.start_wash()30 31 wc=Washer(100,10)32 wc.set_water(50)33 wc.set_scour(5)34 wc.start_wash()35 36 37 38 39
Résultat de l'exécution :
Le constructeur peut enrichir l'objet instance lorsque la classe est instanciée, et a pour fonction d'instancier différents types d'instances.
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!