Nous avons donc parlé d'encapsulation, d'abstraction, qu'en est-il du troisième pilier de l'espoir, cela
s'appelle l'héritage et l'héritage permet à de nouveaux objets d'adopter les propriétés d'objets existants afin que vous puissiez
hériter de classes.
Regardons un exemple.
Supprimons le code précédent que nous avons eu et revenons à notre exemple de jeu.
Nous voulons créer un nouveau jeu et nous avons différents types d'utilisateurs, donc nous avons des utilisateurs qui peuvent être des sorciers, qui peuvent
être des elfes, qui peuvent être, je ne sais pas, des archers.
Mais tous ces utilisateurs ont des fonctionnalités communes.
Et chacun des sous-utilisateurs, comme les sorciers, les elfes, les archers, a des fonctionnalités communes partagées, mais là encore,
des attaques différentes peuvent être.
Donc, en utilisant OLP, nous pouvons réellement faire l'héritage.
Par exemple, disons que nous avons un utilisateur de classe ici et que cet utilisateur aura, disons, une fonction de signature.
Ou la méthode Sinon, encore une fois, cela va se recevoir et nous supposerons pour l'instant que nous avons une
sorte de signe ici.
Alors disons simplement pour l'instant, imprimez connecté, car pour jouer à un jeu, ils doivent être connectés.
OK, maintenant vous vous demandez peut-être, oh, où est la méthode d'initialisation ici ?
Ne devrions-nous pas avoir cette méthode d'initialisation qui s'exécute en premier ?
Eh bien, nous pourrions, mais si nous n'avons pas de variables ou d'attributs que nous voulons attribuer à l'utilisateur, eh bien, dans ce cas,
nous aurions un besoin et une méthode.
Donc, pour l'instant, nous dirons simplement que nous n'avons pas besoin que l'utilisateur n'ait rien d'autre que cette méthode
de connexion.
Maintenant, disons que nous voulons créer un tas de sous-classes afin d'avoir un assistant de classe.
Et pour l'instant, on va juste faire un pass ici pour ne pas avoir une classe vide, mais ça va quand même nous permettre de
la construire.
Et puis disons que nous avons aussi une classe.
Archer, ça passera aussi.
Je vais m'assurer que nous avons des crochets ici.
Maintenant, voici la chose.
Idéalement, tous ces sorciers et archers sont également des utilisateurs, non ?
Nous avons donc des utilisateurs.
Et ces utilisateurs peuvent avoir plusieurs formes, ils peuvent être des sorciers, ils peuvent être des archers.
Ils peuvent être des ogres, tous les personnages de notre jeu.
Mais tous, disons, doivent d'abord être connectés, comment pouvons-nous nous assurer que tous ces utilisateurs ou classes ont
également accès à la connexion ?
Eh bien, nous pouvons utiliser l'héritage et comment le faire assez facilement, en fait, tout ce que nous faisons est
de passer entre crochets la classe parent dont nous voulons hériter.
Alors disons que je fais du yuzu ici.
Maintenant, cliquons sur exécuter ici.
Aucune erreur.
Tout se présente bien.
Et au fait, vous voyez que la ligne verte ici m'indique que l'indentation n'est pas un multiple de quatre, car
l'indentation devrait être de quatre en Python.
Donc on peut juste faire ça.
Mais j'aime le garder plus petit juste pour qu'il soit plus facile à lire.
OK, alors instancions une classe ici, je vais en créer une assistante, puis dire.
Assistant et exécutez cette classe d'assistant.
Maintenant, si j'imprime ici et que je le fais, disons l'assistant d'impression.
Si je clique, cours.
Je vois que l'objet assistant a été créé, et si je ne me connecte pas ?
Je vois que oui, c'est en fait là si je me connecte et que je clique sur exécuter.
Salut, je suis connecté.
Comme c'est cool d'avoir hérité de la classe d'utilisateurs cette fonctionnalité.
Et c'est vraiment, vraiment puissant parce que maintenant je peux étendre mon sorcier, d'accord, alors
disons que cet sorcier a un caractère inné.
Méthode.
Qui sera exécuté lors de la création de l'assistant et aura un fichier.
Nom.
Et la puissance que nous obtenons.
Et ici, nous attribuerons le nom de soi à un nom égal, puis un pouvoir autodidacte à un pouvoir égal.
Et ajoutons également une autre méthode.
Appelant ça une attaque.
Et cette méthode d'attaque imprimera simplement une chaîne F.
Cela dira.
Attaquer avec.
Le pouvoir de.
Disons le pouvoir autodidacte.
Et puis on va faire la même chose pour l'Archer, donc je vais copier ce code.
Collé ici et l'archer aura un nom.
Et disons qu'au lieu de pouvoir, on dira qu'il a disons.
Nombre de Harrow.
Et nombre de flèches.
Ce sera le nouvel attribut qu'il obtiendra, puis l'attaque devra, eh bien, attaquer avec des flèches.
Et puis il nous restera des flèches.
Une flèche vers la gauche indiquera juste le nombre d'erreurs et nous pouvons faire quelque chose d'amusant où les flèches diminuent à chaque fois
que vous attaquez.
OK, alors maintenant que nous avons ceci, réduisons cela un peu plus petit, juste pour que vous puissiez voir.
Voilà.
Maintenant que nous avons ceci, instancions le premier Schwyzer.
Avec.
Disons Maalin avec la puissance de 50.
Et puis l'archer.
Nous serons instanciés.
Comme Robin avec, disons, cinq cents héros ou moins à cent heures.
Alors maintenant, le sorcier et l'archer vont avoir.
Eh bien, ils auront la connexion.
Mais ils auront aussi l'attaque, mais unique à leur individu.
Des classes.
Et ils auront aussi des propriétés différentes.
Voyons si je devais faire Wizard Dot.
M. Sorcier.
Un point.
Et je dirai.
Attaque.
Et laisse-moi juste revenir en arrière.
Mon intelligence de code.
Nous verrons que nous avons quelques erreurs.
Ici, qu'est-ce que ça dit, nom indéfini moi, et c'est parce que je me suis oublié moi-même et les parenthèses.
Vous vous souvenez donc que nous devons toujours donner le premier paramètre self.
Si nous faisons défiler vers le bas et que nous allons à Wizard Dot, nous voyons que nous avons le nom, le pouvoir et l'attaque.
Si je clique, attaque ici et je cours.
Nous voyons que j'attaque avec une puissance de 50 si j'attaque un point d'archer.
Dans ce cas, je vais attaquer avec des flèches, les flèches en ont laissé cent.
Mais les deux ont la fonction de connexion en même temps.
Comme c'est cool que ce soit le pouvoir de l'héritage.
Nous gardons notre code au sec, d'accord, nous soustrayons la partie du code qu'ils partagent tous les deux, mais
nous changeons ensuite les choses en fonction des besoins de chacun.
Ainsi, par exemple, je pourrais avoir différentes méthodes et propriétés sur Wizzard que l'Archer,
mais aussi avoir une fonctionnalité utilisateur partagée qu'ils ont et ainsi garder son code organisé et propre.
Maintenant, ramenons le zoom avant juste pour que vous puissiez le voir clairement.
Maintenant, cette idée d'héritage est vraiment, vraiment puissante.
Et la clé ici est que nous avons une classe d'appariement et des classes pour enfants.
Maintenant, ces classes enfants sont parfois appelées sous-classes ou classes dérivées parce qu'elles sont des sous-classes d'utilisateur
ou dérivées de la classe d'utilisateur.
Explorons un peu plus ce sujet dans la prochaine vidéo.