Maison  >  Article  >  développement back-end  >  Classes et exemples orientés objet Python

Classes et exemples orientés objet Python

不言
不言original
2018-04-14 10:16:331738parcourir

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

Classes et instances


Les concepts les plus importants de l'orientation objet sont les classes et les instances. Il faut se rappeler que les classes sont des modèles abstraits, comme la classe Student, tandis que les instances sont des objets spécifiques créés à partir de la classe Object", chaque objet a les mêmes méthodes, mais leurs données peuvent être différentes.

En prenant toujours la classe Student comme exemple. En Python, la définition d'une classe se fait via le mot-clé class :

class Student(object):
   pass
class 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 &#39;__main__.Student&#39;>
. 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(&#39;%s:%s&#39;%(self.name,self.score))

bart = Student(&#39;Boyuan Zhou&#39;,100)
lisa = Student(&#39;Maomao&#39;,100)
bart.name= &#39;jeff&#39;
print(bart.name)
jeff
Parce 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 = score
Notez 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(&#39;%s:%s&#39;%(self.name,self.score))

bart = Student(&#39;Boyuan Zhou&#39;,100)
lisa = Student(&#39;Maomao&#39;,100)
bart.name= &#39;jeff&#39;
print(bart.name)
print(bart.score)
jeff
100
Par 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ées

Une 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 = {&#39;name&#39;:&#39;jeff&#39;,&#39;score&#39;:100}
>>> std2 = {&#39;name&#39;:&#39;xin&#39;,&#39;score&#39;:0}
>>> def print_score(std):
...     print(&#39;%s:%s&#39;%(std[&#39;name&#39;],std[&#39;score&#39;]))
...
>>> print_score(std1)
jeff:100
>>> print_score(std2)
xin:0
Cependant, 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(&#39;%s:%s&#39;%(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:100
De 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(&#39;%s:%s&#39;%(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
A
Recommandations 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!

Déclaration:
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
Article précédent:Modèle de stratégie PHPArticle suivant:Modèle de stratégie PHP