Powered by Mathigon

Glossary

Select one of the keywords on the left…

Programmation Orienté ObjetEtudier et modifier une classe

Reading time: ~20 min

Objectifs

Nous appris à créer et utiliser une instance à partir d'une classe. Il est temps de voir comment construire une classe.

Pour faire comprendre comment construire une classe, nous allons reprendre et modifier la classe sorcier.

Etude de la classe Sorcier

La classe sorcier a été défini ainsi.

class Sorcier:

    def __init__(self):
        self.nom = ""
        self.prenom = ""
        self.age = 0
        self.__sorts = []

    def apprendre(self, sort):
        if not sort in self._sorts:
            self._sorts.append(sort)
    
    def lancer(self, sort):
        if not sort in self._sorts:
            print(f"{self.prenom} ne connait pas le sort {sort}")
        else:
            print(f"{self.prenom} lance le sort {sort}")

Pour déclarer une classe dans le langage python, on utilise le mot clé .

On remarque que le nom d'une classe débute par

Quand on initialise une classe, par exemple avec le code sorcier = Sorcier() c'est la méthode qui est appelée.

Le constructeur

La méthode __init__ est appelée le constructeur. Elle prend en paramètre l'instance de la classe, qui est nommé par convention .

A partir de là, tous les attributs de l'objet sont préfixés par le mot clé self. C'est ce qui permet d'attacher les données à l'instance. Ainsi après sa déclaration, les données liées à une instance seront toujours accéssible. Ou presque ...

Constructeur & paramètres

Si l'on veut créer un sorcier qui a pour attributs nom : Potter, prenom : Harry et pour age : 11.

On doit :

  • créer l'instance
  • affecter Potter à l'attibut nom
  • affecter Harry à l'attibut prenom
  • affecter 11 à l'attibut age

Ce qui donne :

sorcier = Sorcier()
sorcier.nom = "Potter"
sorcier.prenom = "Harry"
sorcier.age = 11

Ce n'est pas vraiment pratique, mais on peut améliorer cela.

Il est possible d'ajouter des paramètes au constructeur, ce qui permet de renseigner la valeur des attributs. Pour cela, modifie le constructeur en ajoutant les paramètres voulus

class Sorcier:

    def __init__(self, nom, prenom, age = 10):
        self.nom = nom
        self.prenom = prenom 
        self.age = age
        self.__sorts = []

    ...

Maintenant, nous pouvons passer les arguments lors de notre déclaration de classe et la création du sorcier précédent devient simplement :

Par exemple : Pour créer un sorcier qui a pour attribut nom : Potter, prenom : Harry et pour age : 11 .

sorcier = Sorcier("Potter","Harry",11)

Créer une instance nommée sorcier_2 qui s'appelle Hermione Granger et qui est agé de 10 ans. (Hermione est son prénom)

Vérifions que sorcier_2soit correctement instancié. Pour cela essayons de récupérer son âge.

Acceder aux attibuts.

Dans la définition de la classe, les attributs sont déclarés comme des variables sauf qu'ils sont préfixés par le mot cle . Ainsi utiliser l'age d'un sorcier, à la place de age, on utilise

Déclaration d'une méthode

Dans la définition de la classe, on crée les méthodes que l'objet pourra appeller. Comme pour les fonctions, la définition d'une méthode commence par le mot clé Pour toutes les méthodes de classe ont pour premier paramètre le mot clé .

Compléter le code ci-dessous pour que les sorciers puissent se présenter à l'aide d'une f-string.

Exemple d'utilisation :

sorcier_2.presentation()
>>> Je m'appelle Hermione, j'ai 10 ans

On rappelle que la classe Sorcier est initialisée comme ci-dessous :

class Sorcier:

    def __init__(self, nom, prenom, age):
        self.nom = ""
        self.prenom = ""
        self.age = 0
        self.__sorts = []

La première ligne de notre méthode présentation sera

presentation():

La seconde ligne, contiendra :

print(f"Je m'appelle {}, j'ai {}")

Bravo ! Tu viens de créer ta première méthode.

Voici où en est notre classe Sorcier Il reste à implémenter les méthodes apprendre et lancer.

class Sorcier:

    def __init__(self, nom, prenom, age = 10):
        self.nom = nom
        self.prenom = prenom 
        self.age = age
        self.__sorts = []

    def presentation(self):
        print(f"Je m'appelle {self.prenom}, j'ai {self.age}.")

Il est temps de faire un TP

Archie