Séance 6 · 1 heure · Bonus — hors programme officiel

Héritage

Fil rouge du chapitre : créer un jeu de rôle

Accroche Faut-il tout réécrire ?

À discuter — Un Guerrier et un Mage sont tous les deux des Personnages (nom, pv, force), avec des spécificités en plus (armure, mana). Comment on fait, avec ce qu'on sait déjà ?

Version naïve (à écrire ensemble puis critiquer) :

guerrier_naif.py
class Guerrier:
    def __init__(self, nom, pv, force, armure):
        self.nom = nom
        self.pv = pv
        self.force = force
        self.armure = armure

Apport Hériter plutôt que recopier

guerrier.py
class Guerrier(Personnage):
    def __init__(self, nom, pv, force, armure):
        super().__init__(nom, pv, force)
        self.armure = armure

    def attaquer(self, cible):
        print(f"{self.nom} charge avec son armure !")
        super().attaquer(cible)

Vocabulaire : classe mère (Personnage), classe fille (Guerrier), super(), redéfinition (override) — la classe fille propose sa propre version d'une méthode déjà existante.

À retenir — Le Guerrier hérite automatiquement de tout ce que sait faire un Personnage (se_soigner, est_vivant...) sans qu'on ait besoin de les réécrire.

Exercice — La classe Mage

Créer une classe Mage qui hérite de Personnage, avec un attribut mana et une méthode lancer_sort(self, cible) qui diminue self.mana de 10 et applique self.force * 2 de dégâts à la cible.

Voir la correction →
Vers le projet — La semaine prochaine, mini-donjon par binômes : tout ce qui a été vu depuis 6 séances va être réinvesti.