Séance 2 · 1 heure

Écrire une classe

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

Rappel Ce qu'on sait déjà

Une classe est un moule, un objet en est une réalisation concrète, un attribut est une caractéristique qui appartient à l'objet.

personnage.py
class Personnage:
    def __init__(self, nom, pv, force):
        self.nom = nom
        self.pv = pv
        self.force = force

Démonstration Pourquoi self ?

Voici une version volontairement fautive — pas de self dans le constructeur.

personnage_faux.py
class Personnage:
    def __init__(nom, pv, force):
        nom = nom
        pv = pv
        force = force

hero = Personnage("Aria", 100, 15)
# TypeError: __init__() takes 3 positional arguments but 4 were given
À chercher ensemble — Pourquoi Python dit qu'on lui donne 4 arguments alors qu'on n'en a écrit que 3 ?

Réponse : Python passe toujours l'objet lui-même en premier argument, automatiquement. C'est ce qu'on doit récupérer avec self — l'étiquette "moi-même, l'objet en train de se fabriquer".

personnage_correct.py
class Personnage:
    def __init__(self, nom, pv, force):
        self.nom = nom
        self.pv = pv
        self.force = force
À retenir — self n'est JAMAIS fourni par vous à l'appel. Vous ne verrez jamais Personnage(self, "Aria", 100, 15). Python s'en charge tout seul.

Exercice guidé La classe Monstre

Compléter le constructeur à trous suivant, pour une classe Monstre (nom, pv, degats, butin).

monstre_a_trous.py
class Monstre:
    def __init__(self, nom, pv, degats, butin):
        ... = nom
        self.pv = ...
        self.degats = degats
        ...

Exercice autonome — La classe Objet_magique

Écrire de A à Z une classe Objet_magique avec un attribut nom, un attribut effet, et un attribut valeur. Puis créer un objet epee ("Excalibur", "attaque", 25) et afficher son nom.

Voir la correction →