Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Programmation orientée objet Python

Programmation orientée objet Python

Dans ce didacticiel, vous découvrirez la programmation orientée objet (POO) en Python et son concept fondamental à l'aide d'exemples.

Vidéo :Programmation orientée objet en Python

Programmation Orientée Objet

Python est un langage de programmation multi-paradigmes. Il prend en charge différentes approches de programmation.

L'une des approches populaires pour résoudre un problème de programmation consiste à créer des objets. C'est ce qu'on appelle la programmation orientée objet (POO).

Un objet a deux caractéristiques :

Prenons un exemple :

Un perroquet est un objet, car il possède les propriétés suivantes :

Le concept de POO en Python se concentre sur la création de code réutilisable. Ce concept est également connu sous le nom de DRY (Ne vous répétez pas).

En Python, le concept de POO suit quelques principes de base :

Classe

Une classe est un plan pour l'objet.

Nous pouvons penser à la classe comme un croquis d'un perroquet avec des étiquettes. Il contient tous les détails sur le nom, les couleurs, la taille, etc. Sur la base de ces descriptions, nous pouvons étudier le perroquet. Ici, un perroquet est un objet.

L'exemple pour la classe de perroquet peut être :

class Parrot:
    pass

Ici, nous utilisons le class mot clé pour définir une classe vide Parrot . A partir de la classe, nous construisons des instances. Une instance est un objet spécifique créé à partir d'une classe particulière.

Objet

Un objet (instance) est une instanciation d'une classe. Lorsque la classe est définie, seule la description de l'objet est définie. Par conséquent, aucune mémoire ou stockage n'est alloué.

L'exemple d'objet de la classe perroquet peut être :

obj = Parrot()

Ici, obj est un objet de classe Parrot .

Supposons que nous ayons des détails sur les perroquets. Maintenant, nous allons montrer comment construire la classe et les objets des perroquets.

Exemple 1 :Création d'une classe et d'un objet en Python

class Parrot:

    # class attribute
    species = "bird"

    # instance attribute
    def __init__(self, name, age):
        self.name = name
        self.age = age

# instantiate the Parrot class
blu = Parrot("Blu", 10)
woo = Parrot("Woo", 15)

# access the class attributes
print("Blu is a {}".format(blu.__class__.species))
print("Woo is also a {}".format(woo.__class__.species))

# access the instance attributes
print("{} is {} years old".format( blu.name, blu.age))
print("{} is {} years old".format( woo.name, woo.age))

Sortie

Blu is a bird
Woo is also a bird
Blu is 10 years old
Woo is 15 years old

Dans le programme ci-dessus, nous avons créé une classe avec le nom Parrot . Ensuite, nous définissons les attributs. Les attributs sont une caractéristique d'un objet.

Ces attributs sont définis dans le __init__ méthode de la classe. C'est la méthode d'initialisation qui est exécutée en premier dès que l'objet est créé.

Ensuite, nous créons des instances du Parrot classer. Ici, bleu et woo sont des références (valeur) à nos nouveaux objets.

Nous pouvons accéder à l'attribut class en utilisant __class__.species . Les attributs de classe sont les mêmes pour toutes les instances d'une classe. De même, nous accédons aux attributs d'instance en utilisant blu.name et blu.age . Cependant, les attributs d'instance sont différents pour chaque instance d'une classe.

Pour en savoir plus sur les classes et les objets, accédez à Classes et objets Python

Méthodes

Les méthodes sont des fonctions définies dans le corps d'une classe. Ils sont utilisés pour définir les comportements d'un objet.

Exemple 2 :Création de méthodes en Python

class Parrot:
    
    # instance attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # instance method
    def sing(self, song):
        return "{} sings {}".format(self.name, song)

    def dance(self):
        return "{} is now dancing".format(self.name)

# instantiate the object
blu = Parrot("Blu", 10)

# call our instance methods
print(blu.sing("'Happy'"))
print(blu.dance())

Sortie

Blu sings 'Happy'
Blu is now dancing

Dans le programme ci-dessus, nous définissons deux méthodes, c'est-à-dire sing() et dance() . Celles-ci sont appelées méthodes d'instance car elles sont appelées sur un objet d'instance, c'est-à-dire blu .

Héritage

L'héritage est un moyen de créer une nouvelle classe pour utiliser les détails d'une classe existante sans la modifier. La classe nouvellement formée est une classe dérivée (ou classe enfant). De même, la classe existante est une classe de base (ou classe parent).

Exemple 3 :Utilisation de l'héritage en Python

# parent class
class Bird:
    
    def __init__(self):
        print("Bird is ready")

    def whoisThis(self):
        print("Bird")

    def swim(self):
        print("Swim faster")

# child class
class Penguin(Bird):

    def __init__(self):
        # call super() function
        super().__init__()
        print("Penguin is ready")

    def whoisThis(self):
        print("Penguin")

    def run(self):
        print("Run faster")

peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

Sortie

Bird is ready
Penguin is ready
Penguin
Swim faster
Run faster

Dans le programme ci-dessus, nous avons créé deux classes, à savoir Bird (classe parent) et Pingouin (classe enfant). La classe enfant hérite des fonctions de la classe parent. Nous pouvons le voir à partir du swim() méthode.

Encore une fois, la classe enfant a modifié le comportement de la classe parent. Nous pouvons le voir à partir du whoisThis() méthode. De plus, nous étendons les fonctions de la classe parent, en créant un nouveau run() méthode.

De plus, nous utilisons le super() fonction à l'intérieur du __init__() méthode. Cela nous permet d'exécuter le __init__() méthode de la classe parent à l'intérieur de la classe enfant.

Encapsulation

En utilisant la POO en Python, nous pouvons restreindre l'accès aux méthodes et aux variables. Cela empêche les données d'être modifiées directement, ce qui s'appelle l'encapsulation. En Python, nous désignons les attributs privés en utilisant un trait de soulignement comme préfixe, c'est-à-dire un seul _ ou double __ .

Exemple 4 :Encapsulation de données en Python

class Computer:

    def __init__(self):
        self.__maxprice = 900

    def sell(self):
        print("Selling Price: {}".format(self.__maxprice))

    def setMaxPrice(self, price):
        self.__maxprice = price

c = Computer()
c.sell()

# change the price
c.__maxprice = 1000
c.sell()

# using setter function
c.setMaxPrice(1000)
c.sell()

Sortie

Selling Price: 900
Selling Price: 900
Selling Price: 1000

Dans le programme ci-dessus, nous avons défini un Ordinateur classe.

Nous avons utilisé __init__() méthode pour stocker le prix de vente maximum de Computer . Ici, notez le code

c.__maxprice = 1000

Ici, nous avons essayé de modifier la valeur de __maxprice en dehors de la classe. Cependant, depuis __maxprice est une variable privée, cette modification n'est pas visible sur la sortie.

Comme indiqué, pour modifier la valeur, nous devons utiliser une fonction de définition, c'est-à-dire setMaxPrice() qui prend le prix comme paramètre.

Polymorphisme

Le polymorphisme est une capacité (en POO) à utiliser une interface commune pour plusieurs formulaires (types de données).

Supposons que nous ayons besoin de colorer une forme, il existe plusieurs options de forme (rectangle, carré, cercle). Cependant, nous pourrions utiliser la même méthode pour colorer n'importe quelle forme. Ce concept s'appelle Polymorphisme.

Exemple 5 :Utilisation du polymorphisme en Python

class Parrot:

    def fly(self):
        print("Parrot can fly")
    
    def swim(self):
        print("Parrot can't swim")

class Penguin:

    def fly(self):
        print("Penguin can't fly")
    
    def swim(self):
        print("Penguin can swim")

# common interface
def flying_test(bird):
    bird.fly()

#instantiate objects
blu = Parrot()
peggy = Penguin()

# passing the object
flying_test(blu)
flying_test(peggy)

Sortie

Parrot can fly
Penguin can't fly

Dans le programme ci-dessus, nous avons défini deux classes Parrot et Pingouin . Chacun d'eux a un fly() commun méthode. Cependant, leurs fonctions sont différentes.

Pour utiliser le polymorphisme, nous avons créé une interface commune, c'est-à-dire flying_test() fonction qui prend n'importe quel objet et appelle le fly() de l'objet méthode. Ainsi, lorsque nous avons passé le blu et peggy objets dans le flying_test() fonction, il a fonctionné efficacement.

Points clés à retenir :

  • La programmation orientée objet rend le programme facile à comprendre et efficace.
  • Puisque la classe est partageable, le code peut être réutilisé.
  • Les données sont sûres et sécurisées grâce à l'abstraction de données.
  • Le polymorphisme permet la même interface pour différents objets, afin que les programmeurs puissent écrire du code efficace.

Python

  1. Classe et objet C#
  2. Types de données Python
  3. Opérateurs Python
  4. Dictionnaire Python
  5. Exceptions personnalisées Python
  6. Héritage Python
  7. Classe Java Singleton
  8. Suivi automatique des objets de vision
  9. Java - Objet et classes