Maison >développement back-end >Tutoriel Python >Comment faire de la programmation orientée objet en python

Comment faire de la programmation orientée objet en python

silencement
silencementoriginal
2019-06-24 11:19:053020parcourir

Comment faire de la programmation orientée objet en python

La programmation orientée objet est simplement basée sur l'utilisation de classes et d'objets. Tous les codes sont implémentés à travers des classes et des objets. La programmation est une programmation orientée objet !

Trois fonctionnalités majeures de l'orientation objet : encapsulation, héritage, polymorphisme

Créez d'abord une classe

#使用class创建一个School类,类中有个student方法
class School:
    def student(self):
        pass
a1=School()

1 Encapsulation

1. Encapsulation : encapsulez d'abord certains contenus dans un endroit, puis appelez

class School:    def __init__(self,name,age):    #构造方法,创建对象是执行
        self.name=name
        self.age=age#创建对象a1,a2a1=School("zhangsan",18)
a2=School("lisi",18)

si nécessaire. Le code ci-dessus implémente la fonction d'encapsulation et encapsule le nom et l'âge respectifs dans les attributs name et age de self. équivalent à être encapsulé dans les objets a1 et a2. Les fonctions définies dans la classe

sont appelées méthodes, et les fonctions avec __init__ sont appelées constructeurs, qui seront automatiquement exécutées lors de la création des objets a1 et a2.

2. Appel : Il existe deux façons d'appeler, l'appel direct via l'objet et l'appel indirect via soi

Appel direct via l'objet

class School:    def __init__(self,name,age):
        self.name=name
        self.age=age    def student(self):        print("name:%s,age:%s"%(self.name,self.age))#创建对象a1,a2a1=School("zhangsan",18)
a2=School("lisi",18)
print a1.name,a1.age
print a2.name,a2.age#执行结果: zhangsan 18
      lisi 18

Appel indirect via soi

🎜>
class School:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def student(self):
        print("name:%s,age:%s"%(self.name,self.age))
#创建对象a1,a2
a1=School("zhangsan",18)
a2=School("lisi",18)

#执行类中的方法时,通过self间接调用被封装的内容
a1.student()
a2.student()
#执行结果:
#name:zhangsan,age:18
#name:lisi,age:18

2. Héritage

1. Héritage : les classes dérivées (sous-classes) peuvent hériter des méthodes des classes de base (classes parentes), de sorte que La sous-classe n'a besoin que d'hériter de la classe parent sans avoir à implémenter chaque méthode une par une

Écrivez une autre classe entre parenthèses après le nom de la classe pour indiquer qu'elle hérite de cette classe

class School:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def student(self):
        print("name:%s,age:%s"%(self.name,self.age))
    def classroom(self):
        print("%s去教室"%self.name)

class SchoolA(School):  #SchoolA继承School
    def __init__(self,name):
        self.name=name

class SchoolB(SchoolA): #SchoolB继承SchoolA
    def __init__(self,name):
        self.name=name
#创建对象a1
a1=SchoolA("zhangsan")
a1.classroom()
#创建对象a2
a2=SchoolB("lisi")
a2.classroom()

#执行结果:
#   zhangsan去教室
#   lisi去教室

Dans ce qui précède code we Comme vous pouvez le voir, il n'y a pas de méthode de classe dans SchoolA et SchoolB, mais comme SchoolB hérite de SchoolA et SchoolA hérite de School, ils peuvent

appeler la méthode de classe dans School après avoir créé l'objet.

2. Héritage multiple

En python, une classe peut également hériter de plusieurs classes. Lors de l'héritage de plusieurs classes, il existe deux façons de trouver des fonctions dans la classe

Profondeur d'abord. : Lorsque la classe est une classe classique, en cas d'héritage multiple, elle sera recherchée d'abord en profondeur

En largeur d'abord : Lorsque la classe est une classe de nouveau style, en cas d'héritage multiple , il sera recherché en largeur

(en python3.

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