Logo de kxs.frCours d'informatique pour le lycée et la prépa

Programmation orientée objet

Classe de base

Il est temps de voir la POO. Nous allons créer une classe Personnage qui va contenir tout ce dont un personnage a besoin. Les classes permettent de construire les objets de la programmation orientée objet.

Voici le code permettant de déclarer une classe Personnage :

class Personnage:

    def __init__(self, nom, force):
        self.nom = nom
        self.force = force

Quelques explications :

Comment utiliser cette classe ? Il faut l’instancier ! Ce n’est pas très compliqué :

p1 = Personnage("Murzol", 50)

p1 est alors une instance de la classe Personnage : c'est à dire un objet crée à partir de la classe Personnage. Les arguments "Murzol" et 50 ont été envoyés au constructeur qui les a affecté aux bonnes variables d’instances (self est un paramètre « fantôme »).

Nous pouvons alors accéder aux attributs de notre instance (même si c’est déconseillé de faire ainsi) :

print(p1.nom)
print(p1.force)

Qu’avons-nous amélioré ici ?

Ajout d’une méthode

Pour découvrir encore un avantage de la POO, nous allons créer une méthode qui va permettre d’afficher les caractéristiques du personnage.

8) Écrivez une méthode affiche() qui va permettre d’afficher pour p1 ses caractéristiques sous cette forme :

nom : Murzol | force : 50

On fera appel à cette méthode avec la commande p1.affiche().

Qu’avons-nous amélioré ici ?

Ajout d’un docstring

Comme nous l'avons vu pour les fonctions, il est recommandé d’ajouter une description de la classe en utilisant une chaîne de caractère directement sous le nom de la classe. Cette chaîne de caractère doit utiliser trois guillemets """. Par exemple on pourra mettre ceci :

class Personnage:
    """Personnage quelconque avec un nom et une force"""

Ce n’est pas indispensable mais c’est une bonne habitude à prendre. Et pourquoi ne pas mettre simplement un commentaire ? Car de cette façon votre docstring sera affichée en cas d’appel à help(Personnage) pour afficher l’aide.

9) Ajoutez la docstring ci-dessus et affichez l’aide de la classe.

Qu’avons-nous amélioré ici ?

Ajout d’une méthode de combat

Pour faire combattre nos deux personnages, nous allons créer une méthode combat qui prend en paramètre self (comme toujours) et une deuxième instance contre qui faire le combat. Comme avant, cette méthode doit afficher le nom du vainqueur.

10) Complétez la définition de la fonction combat ci-dessous :

def combat(self, combattant):

11) Testez cette méthode avec deux instances p1 et p2 pour Murzol et Grunak.

Qu’avons-nous amélioré ici ?

Amélioration de la méthode de combat

12) Améliorez la méthode de combat pour qu’elle affiche plus d’informations comme dans l’exemple ci-dessous :

Combat entre Murzol et Grunak
Vainqueur : Murzol