Maison > développement back-end > Tutoriel Python > Introduction à l'utilisation du constructeur

Introduction à l'utilisation du constructeur

PHP中文网
Libérer: 2017-06-21 16:36:14
original
2439 Les gens l'ont consulté

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()
Copier après la connexion

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),必要的时候加上参数。
Copier après la connexion


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
Copier après la connexion

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()
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal