Comprendre l`abstraction en Python

| | | | | | | | | | | | | | | | | | |

Dans ce didacticiel, nous discuterons du concept d`abstraction en Python pour une approche de programmation orientée objet.

Essentiellement, l`abstraction se concentre sur le masquage des implémentations internes d`un processus ou d`une méthode à l`utilisateur. Ainsi, l`utilisateur sait ce qu`il fait, mais ne sait pas comment le travail est fait.

 abstraction



& nbsp;

Qu`est-ce que l`abstraction en Python ?

Par exemple, les gens ne voient pas une voiture comme un ensemble de milliers de pièces individuelles. Au lieu de cela, ils le voient comme un objet bien défini avec son propre comportement unique. Cette abstraction permet aux gens de conduire une voiture sans avoir conscience de la complexité des pièces qui la composent. Ils peuvent ignorer les détails des systèmes de transmission et de freinage du moteur. Au lieu de cela, ils peuvent utiliser l`objet entier.

Un moyen puissant de manipuler l`abstraction et l`utilisation de la classification hiérarchique. Cela nous permet de superposer la sémantique de systèmes complexes, en les décomposant en éléments plus gérables. A l`extérieur, la voiture est un objet unique. Une fois à l`intérieur, vous voyez que la voiture se compose de plusieurs sous-systèmes : direction, freins, système audio, ceintures de sécurité, etc. À leur tour, chacun de ces sous-systèmes se compose de blocs plus petits.

Le fait est que nous conduisons une voiture (ou tout autre système complexe) utilisant des abstractions hiérarchiques.

Cela peut également être appliqué aux programmes informatiques utilisant des concepts de POO. C`est l`essence de la programmation orientée objet.

Classes abstraites et méthodes en Python

Pour déclarer une classe abstraite, nous devons d`abord importer le module abc . Prenons un exemple.

 from abc import ABC class abs_class (ABC): #abstract methods 

Ici abs_class &c`est un résumé classe dans laquelle des méthodes abstraites ou toute autre méthode peuvent être définies.




En tant que propriété, les classes abstraites peuvent avoir n`importe quel nombre de méthodes abstraites, coexistant avec n`importe quel nombre d`autres méthodes. Par exemple, nous pouvons voir ci-dessous.

 from abc import ABC, abstractmethod class abs_class (ABC): #normal method def method (self): # method definition @abstractmethod def Abs_method (self): #Abs_method definition 

Ici method () &méthode normale, tandis que Abs_method () &une méthode abstraite qui implémente le @abstractmethod du module abc.

Exemple

Maintenant que nous connaissons les classes et les méthodes abstraites, regardons un exemple.

 from abc import ABC, abstractmethod class Absclass (ABC): def print (self, x): print ("Passed value:", x) @abstractmethod def task (self): print ("Nous sommes dans la tâche Absclass") class test_class (Absclass): def task (self): print ("Nous sommes dans la tâche test_class") class example_class (Absclass): def task (self ): print ("Nous sommes à l`intérieur de la tâche example_class") #objet de test_class créé test_obj = test_class () test_obj.task () test_obj.print (100) #objet de example_class créé ex ample_obj = example_class () example_obj.task ( ) example_obj .print (200) print ("test_obj est une instance de Absclass ?", isinstance (test_obj, Absclass)) print ("example_obj est une instance de Absclass ?", isinstance (example_obj, Absclass)) 

Sortie :

 exemple

où,

Absclass &c`est une classe abstraite héritée de la classe ABC du module abc. Il contient la méthode abstraite task () et la méthode print () qui sont visibles par l`utilisateur. Les deux autres classes héritées de cette classe abstraite sont &ce sont test_class et example_class . Les deux ont leur propre méthode task () (une extension de méthode abstraite).

Après que l`utilisateur crée des objets à partir des classes test_class et example_class et appelle la méthode task () pour les deux, les définitions de méthode task () cachées dans les deux classes entrent en jeu. Ces définitions sont masquées pour l`utilisateur. La méthode abstraite task () de la classe abstraite Absclass n`est jamais réellement appelée.

Mais lorsque le print () est appelée comme pour test_obj et example_obj, la méthode print () Absclass est appelée car ce n`est pas une méthode abstraite.

Remarque : nous ne pouvons pas instancier une classe abstraite . Cela provoque une erreur.