Séance 3 · 1 heure
Les méthodes
Fil rouge du chapitre : créer un jeu de rôle
Rappel Repérer la structure d'une classe
personnage.py
class Personnage:
def __init__(self, nom, pv, force):
self.nom = nom
self.pv = pv
self.force = force
À l'oral — Si je crée
orc = Personnage("Orc", 40, 8), que vaut orc.force ?
Démonstration Donner une action à l'objet
Pour l'instant, nos personnages existent mais ne savent rien faire. On veut qu'Aria puisse attaquer un Gobelin.
personnage.py
class Personnage:
def __init__(self, nom, pv, force):
self.nom = nom
self.pv = pv
self.force = force
def attaquer(self, cible):
cible.pv = cible.pv - self.force
print(f"{self.nom} attaque {cible.nom} !")
Déroulons l'appel ensemble :
combat.py
hero = Personnage("Aria", 100, 15)
monstre = Personnage("Gobelin", 30, 5)
hero.attaquer(monstre)
À chercher ensemble — Dans
hero.attaquer(monstre), qui est self à l'intérieur de la méthode ? Qui est cible ?
Réponse : self reçoit hero (l'objet à gauche du point), cible reçoit monstre (l'argument entre parenthèses).
Comparaison Méthode vs fonction classique
comparaison.py
# Une fonction classique : indépendante
def attaquer_fonction(attaquant, cible):
cible.pv = cible.pv - attaquant.force
# Une méthode : self est fourni automatiquement
def attaquer(self, cible):
cible.pv = cible.pv - self.force
Ce qui change à l'appel : attaquer_fonction(hero, monstre) contre hero.attaquer(monstre).
Exercice guidé — Se soigner et vérifier si on est vivant
Ajouter deux méthodes à la classe Personnage :
se_soigner(self, quantite): augmenteself.pvdequantite.est_vivant(self): renvoieTruesiself.pv > 0,Falsesinon.