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-paradigme. Il prend en charge différentes approches de programmation.
L'une des approches les plus courantes pour résoudre un problème de programmation consiste à créer des objets. Ceci est connu sous le nom de programmation orientée objet (POO).
Un objet a deux caractéristiques:
- les attributs
- comportement
Prenons un exemple:
Un perroquet peut être un objet, car il possède les propriétés suivantes:
- nom, âge, couleur comme attributs
- chanter, danser comme comportement
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 (Don't Repeat Yourself).
En Python, le concept de POO suit quelques principes de base:
Classe
Une classe est un plan pour l'objet.
Nous pouvons considérer la classe comme une esquisse 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 de classe de perroquet peut être:
classe Parrot: pass
Ici, nous utilisons le class
mot - clé pour définir une classe Parrot vide. À 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 parrot peut être:
obj = Perroquet ()
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))
Production
Blu est un oiseau Woo est aussi un oiseau Blu a 10 ans Woo a 15 ans
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 la __init__
méthode de la classe. C'est la méthode d'initialisation qui est exécutée pour la première fois dès la création de l'objet.
Ensuite, nous créons des instances de la classe Parrot. Ici, blu et woo sont des références (valeur) à nos nouveaux objets.
Nous pouvons accéder à l'attribut de classe 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())
Production
Blu chante 'Happy' Blu danse maintenant
Dans le programme ci-dessus, nous définissons deux méthodes à savoir sing()
et dance()
. Celles-ci sont appelées méthodes d'instance car elles sont appelées sur un objet d'instance ie blu
.
Héritage
Inheritance is a way of creating a new class for using details of an existing class without modifying it. The newly formed class is a derived class (or child class). Similarly, the existing class is a base class (or parent class).
Example 3: Use of Inheritance in 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()
Output
Bird is ready Penguin is ready Penguin Swim faster Run faster
In the above program, we created two classes i.e. Bird (parent class) and Penguin (child class). The child class inherits the functions of parent class. We can see this from the swim()
method.
Again, the child class modified the behavior of the parent class. We can see this from the whoisThis()
method. Furthermore, we extend the functions of the parent class, by creating a new run()
method.
Additionally, we use the super()
function inside the __init__()
method. This allows us to run the __init__()
method of the parent class inside the child class.
Encapsulation
Using OOP in Python, we can restrict access to methods and variables. This prevents data from direct modification which is called encapsulation. In Python, we denote private attributes using underscore as the prefix i.e single _
or double __
.
Example 4: Data Encapsulation in 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()
Output
Selling Price: 900 Selling Price: 900 Selling Price: 1000
In the above program, we defined a Computer class.
We used __init__()
method to store the maximum selling price of Computer
. We tried to modify the price. However, we can't change it because Python treats the __maxprice as private attributes.
As shown, to change the value, we have to use a setter function i.e setMaxPrice()
which takes price as a parameter.
Polymorphism
Polymorphism is an ability (in OOP) to use a common interface for multiple forms (data types).
Suppose, we need to color a shape, there are multiple shape options (rectangle, square, circle). However we could use the same method to color any shape. This concept is called Polymorphism.
Example 5: Using Polymorphism in 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)
Output
Parrot can fly Penguin can't fly
In the above program, we defined two classes Parrot and Penguin. Each of them have a common fly()
method. However, their functions are different.
Pour utiliser le polymorphisme, nous avons créé une interface commune, c'est-à-dire une flying_test()
fonction qui prend n'importe quel objet et appelle la fly()
méthode de l'objet . Ainsi, lorsque nous avons passé les objets blu et peggy dans la flying_test()
fonction, cela 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 des données.
- Le polymorphisme permet la même interface pour différents objets, de sorte que les programmeurs peuvent écrire du code efficace.