TP2 - Chasse aux bugs en POO
Apprendre à reconnaître et corriger les erreurs courantes en programmation orientée objet.
- Faire le petit quiz :
Vérifie tes connaissances
Les méthodes spéciales (dunders) doivent toujours commencer et finir par deux underscores.
- Créez un dossier
POO
(Programmation Orientée Objet) dans votre dossierTerminale NSI
. - Dans ce dossier, créez un fichier
TP2_bugs.py
.
Introduction
En POO, il est très fréquent de rencontrer des erreurs au moment de définir ou d’utiliser des classes.
L’objectif de ce TP est de se familiariser avec ces erreurs pour mieux les comprendre et apprendre à les corriger.
Exercice 1
On reprend la classe Pokemon :
class Pokemon :
def __init__(self, nom, pv):
nom = nom
pv = pv
- Créez un objet
pikachu = Pokemon("Pikachu", 50)
. - Essayez d’afficher
pikachu.nom
. Que se passe-t-il ? - Expliquez pourquoi l’attribut n’existe pas.
- Corrigez le code pour que chaque objet ait bien ses attributs.
Exercice 2
On reprend la classe Voiture :
class Voiture :
def __init__(self, couleur):
self.couleur = couleur
def afficher():
print(self.couleur)
- Créez une voiture
v1 = Voiture("Rouge")
et appelezv1.afficher()
. Quelle erreur apparaît ? - D’où vient cette erreur ?
- Corrigez la méthode pour qu’elle fonctionne.
Exercice 3
On reprend la classe Instrument :
class Instrument :
def __init__(self, nom):
self.nom = nom
def nom(self):
return self.nom
- Créez un instrument
clarinette = Instrument("Clarinette")
. - Essayez d’appeler
clarinette.nom()
. Que se passe-t-il ? - Expliquez pourquoi le programme ne fonctionne pas.
- Corrigez la classe pour séparer l’attribut et la méthode.
Exercice 4
class Boucle :
def __init__(self):
self.b = Boucle()
b1 = Boucle()
- Exécutez le code. Quelle erreur est affichée par Python ?
- Expliquez en quelques mots pourquoi cette erreur apparaît.
- Corrigez la classe pour éviter la récursion infinie.
Exercice 5
On reprend la classe Carre :
class Carre :
def __init__(self, cote):
self.cote = cote
c1 = Carre(4)
print(c1.longueur)
- Que se passe-t-il quand on exécute ce programme ?
- Comment Python appelle-t-il ce type d’erreur ?
- Corrigez le code pour que l’affichage fonctionne correctement.
Exercice 6 – Bonus : utiliser les erreurs pour progresser
En Python, une exception est une erreur que le programme renvoie quand il ne peut pas exécuter une instruction. Exemple : AttributeError, TypeError, RecursionError…
On peut intercepter ces erreurs grâce au mot-clé try/except.
try:
print(c1.longueur)
except AttributeError:
print("L'attribut n'existe pas !")
- Expliquez le rôle du bloc
try/except
. - Pourquoi cela peut-il être utile dans des programmes plus complexes ?
- Rajoutez un
try/except
dans la classeVoiture
pour éviter une erreur si on essaie d’accéder à un attribut inexistant.
Faire des erreurs en POO est normal : l’important est de comprendre le message d’erreur et d’apprendre à le corriger.