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.
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.