Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
isinstance et hierarchie
La fonction isinstance(objet, classe) te permet de vérifier si un objet est une instance d'une classe ou d'une de ses sous-classes.
C'est different de type() qui vérifie le type exact :
class Animal: pass
class Chien(Animal): pass
rex = Chien() isinstance(rex, Chien) renvoie True isinstance(rex, Animal) renvoie True (Chien herite de Animal) type(rex) == Animal renvoie False (c'est un Chien, pas un Animal)
isinstance est plus souple car il respecte l'héritage. C'est la méthode recommandee pour tester le type d'un objet.
Reprends la hierarchie Forme/Carre/Triangle de l'exercice précédent. Écris une fonction compter_par_type(formes) qui prend une liste de formes et renvoie un dictionnaire avec le nombre de carres et de triangles.
Exemple : formes = [Carre(2), Triangle(3, 4), Carre(5), Triangle(1, 2)] compter_par_type(formes) renvoie {'carres': 2, 'triangles': 2}
class Forme:
def aire(self):
return 0
class Carre(Forme):
def __init__(self, cote):
self.cote = cote
class Triangle(Forme):
def __init__(self, base, hauteur):
self.base = base
self.hauteur = hauteur
def compter_par_type(formes):
carres = sum(1 for f in formes if isinstance(f, Carre))
triangles = sum(1 for f in formes if isinstance(f, Triangle))
return {'carres': carres, 'triangles': triangles}