Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Intercepter les attributs manquants avec __gétattr__
Quand tu accedes a un attribut d'un objet (par exemple obj.nom), Python suit un processus precis. Il cherche d'abord dans l'instance, puis dans la classe, puis dans les classes parentes. Si l'attribut n'est trouve nulle part, Python appelle la méthode speciale __gétattr__ si elle existe, sinon il leve une AttributeError.
__gétattr__ est donc un filet de sécurité : elle n'est appelee QUE quand l'attribut n'a pas ete trouve normalement.
class Config: def __init__(self): self.debug = True
Écris une classe DictAvecDéfaut qui s'utilise comme un objet a attributs. Le constructeur prend un dictionnaire et un défaut. Quand on accede a un attribut qui existe comme clé du dictionnaire, on obtient sa valeur. Sinon, on obtient la valeur par défaut.
Exemple : d = DictAvecDéfaut({'nom': 'Alice', 'age': 30}, 'inconnu') d.nom renvoie 'Alice' d.ville renvoie 'inconnu'
Tests (3/4)
Attribut existant
d = DictAvecDéfaut({'nom': 'Alice'}, 'inconnu')
assert d.nom == 'Alice'
Attribut manquant
d = DictAvecDéfaut({'nom': 'Alice'}, 'inconnu')
assert d.ville == 'inconnu'