Polymorphisme python

Polymorphisme python

Introduction

Le polymorphisme est encore un autre aspect important de la programmation orientée objet. Pas de fans de Warcraft, cela n'a rien à voir avec la transformation des gens en moutons. Ce serait beaucoup plus cool. Au lieu de cela, le polymorphisme permet aux méthodes et aux fonctions d'utiliser des classes avec des fonctionnalités similaires de la même manière.

Le polymorphisme réduit la quantité de code que vous devez écrire en éliminant la redondance d'une manière logique et significative. Il s'appuie sur vous, le programmeur, pour être intelligent dans votre conception et vos similitudes dans les objets.

Qu'est-ce que le polymorphisme?

Le polymorphisme est l'une de ces choses difficiles à définir en un seul mot ou phrase. Le terme prend des formes légèrement différentes dans différents langages de programmation, ce qui rend un peu plus difficile à épingler de manière concise. D'une manière générale, et à Python, c'est la capacité de plusieurs objets différents dérivés de différentes classes à utiliser de la même manière.

Pour utiliser l'exemple des voitures avec lesquelles ce guide a fonctionné, imaginez que vous devez écrire une fonction qui appelle le Avance Méthode sur tout type de voiture qu'il est passé. Chaque objet créé à partir de la classe «voiture» d'origine ou de l'une des sous-classes qui l'étendent devrait avoir un Avance Méthode, même s'il a été remplacé de faire quelque chose de légèrement différemment dans certaines sous-classes. Cela signifie que grâce au polymorphisme, vous pouvez écrire une seule fonction qui prend un objet «voiture» et appelle Avance. Étant donné que tous les objets instanciés des sous-classes de la «voiture» sont encore techniquement des objets «voiture» et ont toutes ses propriétés d'origine sous une forme ou une autre, cela fonctionnera.

Veuillez noter que la spécification d'une seule superclasse à utiliser comme type d'objet n'est pas entièrement nécessaire à Python. Python n'est pas fortement dactylographié, vous n'avez donc pas à définir explicitement les types de variables qu'une méthode ou une fonction prend. Dans des langues comme Java, cela joue un rôle dans le comportement du polymorphisme. Cependant, dans Python, c'est une bonne idée de y penser dans ce sens pour s'assurer que les objets que vous passez auront tous la méthode ou la propriété utilisée.

L'utiliser dans Python

Maintenant, cela aiderait vraiment à voir tout cela en action. Ce n'est pas aussi complexe que vous le pensez probablement en ce moment. Tout d'abord, assurez-vous que vous êtes configuré avec les exemples de classes. Si vous ne les avez pas déjà, ils sont juste en dessous.

Class Car (Object): Def __init __ (self, Make = 'Ford', Model = 'Pinto', Year = '1971', kilométrage = 253812, Color = 'Orange'): Self.__Make = se faire auto.__Model = Modèle de soi.__ ans = an.__mileage = self de kilométrage.__Color = couleur def set_make (self, make): self.__Make = Make def get_make (self): renvoie soi-même.__make def set_model (self, modèle): soi.__Model = modèle def get_model (self): renvoyer.__Model def set_year (self, année): soi.__year = an def get_year (self): return self.__ ans def set_mileage (self, kilométrage): soi.__mileage = kilométrage def get_mileage (self): renvoyer soi-même.__mileage def set_color (self, couleur): soi.__Color = couleur def get_color (self): retourne.__color def move_forward (self, vitesse): imprimer ("Votre% s va de l'avant à% s"% (self.__Model, Speed)) def move_backward (self, Speed): Imprimer ("se déplaçant en arrière à% s"% Speed) Class Musclear (Car): Def __init __ (self, make = 'Ford', modèle = 'Mustang', année = '1965', kilométrage = 54032, color = 'bleu', hp = 325): super ().__INIT __ (Make, modèle, année, kilométrage, couleur) Self.__hp = hp def set_hp (self, hp): self.__hp = hp def get_hp (self): return soi.__hp def drag_race (self, adversaire): if (self.__hp> adversaire.get_hp ()): Renvoyez "vous gagnez!"Sinon: retour" tu perds!"Def Trade_up (self, année, couleur): super ().set_year (année) super ().set_color (couleur) super ().set_mileage (0) 

Avec les classes de démonstration configurées, vous pouvez tester une fonction rapide qui utilise le polymorphisme pour appeler Avance.

newmusclecar = musclecar () newcar = car () def go_25 (car_object): car_object.MOVE_FORWARD ("25MPH") go_25 (newcar) go_25 (newmusclecar) 

Les deux appels de fonction se comportent exactement les mêmes, même s'ils ont été transmis différents objets qui ont été créés à partir de classes différentes. Grâce au polymorphisme, vous n'avez pas à écrire deux fonctions différentes et pouvez utiliser les propriétés similaires des objets pour écrire une seule fonction.

Essayez de remplacer l'un des Avance Méthode dans la classe «musclar». Exécutez à nouveau la fonction et voyez ce qui se passe.

 Class Musclecar (voiture):… def move_forward (self, Speed): Print ("Votre impressionnant% S rugit sur la route à% s"% (Self.__model, vitesse))… 

Lorsque la fonction appelle le Avance Méthode sur l'objet Muscle Car, il fonctionne toujours parfaitement et la version remplacée de la méthode est utilisée.

Réflexions de clôture

Le polymorphisme semble être un concept terriblement complexe, mais son nom est en quelque sorte un mal orienté. Le concept lui-même n'est pas si intimidant, et il aide même à simplifier la structure globale de votre code.

Un thème commun dans la programmation orientée objet est l'élimination de la redondance à travers le code réutilisable et adaptable. Le polymorphisme est une partie importante de cette image.

Des exercices

  1. Utilisez l'exemple de classes pour instancier un objet «voiture» et un objet «Musclecar».
  2. Créer une fonction qui peut interagir avec l'un ou l'autre type d'objet «voiture».
  3. Appelez votre fonction deux fois, en la passant les deux objets.
  4. Remplacer l'une des méthodes de la classe Musclecar. Assurez-vous de ne pas modifier les paramètres qu'il accepte de radicalement.
  5. Appelez à nouveau votre fonction.
  6. Créer une nouvelle classe qui hérite de la classe «voiture».
  7. Instancier un nouvel objet de votre classe nouvellement créée. Passez l'objet à votre fonction.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Comment créer une application Tkinter à l'aide d'un objet orienté…
  • Comment écrire des extensions de nautilus avec nautilus-python
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Configuration de ZFS sur Ubuntu 20.04
  • Masterring Bash Script Loops
  • Comment travailler avec l'API WooCommerce REST avec Python
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • EEPROM CH341A Programmer - Lisez et écrivez des données à Chip sur…