Un dernier pilier d'OLP à parcourir, nous avons parlé d'encapsulation, d'abstraction et d'héritage, et puis
il y a ce quatrième qui a un mot assez dur, le polymorphisme.
Qu'est-ce que ça veut dire?
Eh bien, Polly signifie beaucoup et plus.
Fiza signifie pour tant de formes.
Maintenant, nous savons que les méthodes appartiennent aux objets, n'est-ce pas ?
Nous utilisons le mot-clé self pour agir sur l'objet qui a été instancié.
Or, en Python, cette idée de polymorphisme fait référence à la manière dont les classes d'objets peuvent partager le même
nom de méthode.
Mais ces noms metha peuvent agir différemment en fonction de l'objet qui les appelle.
Maintenant, cela semble extrêmement déroutant, alors examinons un code.
Nous avons notre assistant utilisateur et Archer Classis.
Et comme je l'ai mentionné, avec le polymorphisme, différentes classes d'objets peuvent partager des noms de
méthode, nous avons donc ici une attaque partagée, mais chacune fait quelque chose de différent en fonction de l'attribut.
Par exemple, quand je fais une attaque de magicien.
Alors faisons-le.
Attaque d'un point Wizzard.
Si je clique sur exécuter, j'attaque avec une puissance de 60 car, eh bien, Wizzard a une signification particulière pour son
attaque contre Archer.
Ils sont différents.
Ainsi, bien qu'ils partagent les mêmes noms de méthode en raison de l'objet qui l'appelle, la sortie
sera différente.
Donc, nous pouvons en fait faire quelque chose d'assez intéressant ici, disons
que j'ai un Wizzard, puis nous aurons aussi Archer un et Archer un sera Robin.
Et Robin a 30 heures maintenant.
Ce que je peux faire ici est en fait appelé de différentes manières, par exemple,
je peux créer une toute nouvelle fonction appelée attaque de joueur dans cette attaque de joueur prend un personnage.
Et ici, nous pouvons dire attaque par points de caractère.
Et maintenant, si je lance ce code et dis.
Attaque du joueur.
Assistant un.
Et je lance ça.
Je vais attaquer avec une puissance de un si j'attaque un joueur, avoir Archer ici, si je clique sur courir.
Vous voyez que la même fonction me donne une sortie différente, même si
nous appelons la même chose à cause de l'objet que nous lui passons polymorphisme, une autre façon de
le démontrer est de faire une boucle for, si je le fais pour, disons, entrez le personnage et ajoutons Wizzard one et Archer one dans une liste.
Et si j'imprime ici ou que nous lançons simplement une attaque par points de caractère.
Si je clique sur exécuter ici.
Encore une fois, j'ai deux sorties différentes, même si j'appelle la même méthode à cause des
différents objets et c'est un concept vraiment puissant, n'est-ce pas, car nous pouvons personnaliser cela en fonction
de nos besoins spécifiques, même si, disons que l'utilisateur a eu une attaque.
Method et cette méthode d'attaque par défaut est, disons que print ne fait rien parce que c'est juste un utilisateur.
Même si je les lance, disons l'assistant d'impression un.
Et disons attaque par points, si je clique, cours.
Cela va remplacer l'attaque d'origine, car nous avons déjà cette méthode dans notre classe
d'assistant.
Mais disons que je voulais que Yuzu et Wizzard exécutent la méthode d'attaque, comment puis-je le faire ?
Maintenant, c'est quelque chose que nous allons explorer un peu plus dans la prochaine vidéo, mais pour l'instant je peux dire
l'attaque par point de l'utilisateur.
Et se donner.
Parce que j'accepte l'utilisateur comme paramètre ici.
Et puis je Camron, attaque par point utilisateur.
Voyons donc ce qui se passe ici si je clique sur exécuter.
Je n'ai rien fait et j'ai attaqué avec une puissance de 60.
Donc le polymorphisme nous permet d'avoir de nombreuses formes, c'est la capacité de redéfinir les méthodes pour ces classes dérivées
qu'est Wizard et Archer.
Et un objet qui est instancié peut se comporter sous différentes formes de différentes manières, en fonction du polymorphisme.
Et c'est utile parce que nous sommes capables de modifier nos classes selon nos besoins spécifiques.
Mais nous n'avons pas non plus à nous répéter au cas où nous voudrions utiliser quelque chose comme une attaque de l'utilisateur à l'intérieur
de Wizard.
Alors voilà, les quatre piliers de l'encapsulation OPIS.
Abstraction.
L'héritage et enfin le polymorphisme.
Maintenant, aucune quantité de vidéos ou de livres ne vous apprendra exactement quand utiliser quoi, cependant.
L'idée ici est de comprendre que ces pouvoirs existent avec l'OLP.
Vous n'allez jamais dire, oh, j'ai besoin d'implémenter le polymorphisme.
Non, la plupart du temps, vous ne faites que coder et il arrive que vous codez d'une manière qui met l'accent
sur le polymorphisme.
C'est juste la puissance de l'OLP, bien que ce soient de grands mots, en fin de compte, nous
avons appris à les utiliser pour structurer notre code d'une manière efficace et propre.
Et c'est tout l'intérêt.
Il s'agit d'organiser notre code.
Maintenant, certains d'entre vous ont peut-être été un peu confus lorsque j'ai attaqué cet utilisateur par point lui-même dans la vidéo suivante, je veux
explorer cela un peu plus.
Je te verrai sur celui-là.