Maison > Article > développement back-end > Classes et exemples orientés objet Python
Le contenu partagé avec vous dans cet article concerne les classes et exemples Python orientés objet, qui ont une certaine valeur de référence. Les amis dans le besoin peuvent se référer aux
class Student(object): passclass est suivi du nom de la classe, qui est Student La classe. le nom est généralement Les mots commençant par une lettre majuscule, suivis de (objet), indiquent de quelle classe la classe est héritée. Nous parlerons plus tard du concept d'héritage. Habituellement, s'il n'y a pas de classe d'héritage appropriée, la classe d'objet est utilisée. . Ce sont toutes les classes Classes qui seront finalement héritées. Après avoir défini la classe Student, vous pouvez créer une instance de Student basée sur la classe Student. La création d'une instance se fait via le nom de la classe + ():
class Student(object): pass bart = Student() print(bart) print(Student)
<__main__.Student object at 0x000001A9412A47B8> <class '__main__.Student'>. Vous pouvez voir, la variable bart pointe vers une instance de Student, et le
0x000001A9412A47B8 suivant est l'adresse mémoire. L'adresse de chaque objet est différente et Student lui-même est une classe.
Vous pouvez librement lier des attributs à une variable d'instance. Par exemple, lier un attribut de nom à l'instance bart :
class Student(object): def __init__(self,name,score): self.name = name self.score = score def print_score(self): print('%s:%s'%(self.name,self.score)) bart = Student('Boyuan Zhou',100) lisa = Student('Maomao',100) bart.name= 'jeff' print(bart.name)
jeffParce que Les classes peuvent servir de modèles, donc lors de la création d'une instance, nous pouvons forcer le remplissage de certains attributs qui, selon nous, doivent être liés. En définissant une méthode __init__ spéciale, lors de la création d'une instance, le nom, le score et d'autres attributs y sont liés :
class Student(object): def __init__(self,name,score): self.name = name self.score = scoreNotez que le premier paramètre de la méthode __init__ est toujours self , représente l'instance créée lui-même Par conséquent, dans la méthode __init__, vous pouvez lier divers attributs à self, car self pointe vers l'instance créée elle-même. Avec la méthode __init__, lors de la création d'une instance, vous ne pouvez pas transmettre de paramètres vides. Vous devez transmettre des paramètres qui correspondent à la méthode __init__, mais self n'a pas besoin d'être transmis à l'interpréteur Python lui-même. sera transmis :
class Student(object): def __init__(self,name,score): self.name = name self.score = score def print_score(self): print('%s:%s'%(self.name,self.score)) bart = Student('Boyuan Zhou',100) lisa = Student('Maomao',100) bart.name= 'jeff' print(bart.name) print(bart.score)
jeff 100Par rapport aux fonctions ordinaires, la fonction définie dans la classe n'a qu'une seule différence, c'est-à-dire que le premier paramètre est toujours la variable d'instance self, et, en appelant When , il n'est pas nécessaire de passer ce paramètre. En dehors de cela, les méthodes de classe ne sont pas différentes des fonctions ordinaires, vous pouvez donc toujours utiliser des paramètres par défaut, des paramètres variables, des paramètres de mot-clé et des paramètres de mot-clé nommé. Encapsulation des donnéesUne fonctionnalité importante de la programmation orientée objet est l'encapsulation des données. Dans la classe Student ci-dessus, chaque instance a son propre nom et ses propres données de score. Nous pouvons accéder à ces données via des fonctions, telles que l'impression du score d'un élève
>>> std1 = {'name':'jeff','score':100} >>> std2 = {'name':'xin','score':0} >>> def print_score(std): ... print('%s:%s'%(std['name'],std['score'])) ... >>> print_score(std1) jeff:100 >>> print_score(std2) xin:0Cependant, puisque l'instance Student elle-même possède ces données, il n'est pas nécessaire d'accéder à ces données à partir de fonctions externes. Vous pouvez les définir directement. fonctions pour accéder aux données à l'intérieur de la classe Student, encapsulant ainsi les "données". Ces fonctions qui encapsulent les données sont associées à la classe Student elle-même. Nous les appelons méthodes de la classe :
class Student(object): def __init__(self,name,score): self.name = name self.score = score def print_score(self): print('%s:%s'%(self.name,self.score))Pour définir une méthode, sauf que le premier paramètre est self, les autres sont les mêmes que les ordinaires. fonctions Idem. Pour appeler une méthode, il suffit de l'appeler directement sur la variable d'instance, à l'exception de self, aucun autre paramètre n'est transmis normalement :
bart.print_score() jeff:100De cette façon, quand on regarde la classe Student de. à l'extérieur, il suffit de savoir, pour créer une instance, vous devez donner le nom et le score, et la manière d'imprimer est définie en interne par la classe Student. Ces données et cette logique sont "encapsulées" et sont faciles à appeler, mais. vous n'avez pas besoin de connaître les détails de l'implémentation interne. Un autre avantage de l'encapsulation est que vous pouvez ajouter de nouvelles méthodes à la classe Student, telles que get_grade :
class Student(object): def __init__(self,name,score): self.name = name self.score = score def print_score(self): print('%s:%s'%(self.name,self.score)) def get_grade(self): if self.score >=90: return 'A' elif self.score>=600: return 'B' else: return 'C' bart = Student('Boyuan Zhou',100) lisa = Student('Maomao',100) bart.name= 'jeff' bart.print_score() print(bart.get_grade())
jeff:100 ARecommandations associées :
À propos de Python Exploration initiale d'un exemple de code orienté objet
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!