Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Classe avec validation automatique des types
En combinant __sétattr__ et un système de declaration de types, on peut créer des classes qui valident automatiquement les types des attributs a l'assignation. C'est un pattern utilise dans des frameworks comme Django (pour les modèles) ou Pydantic.
Écris une classe TypeSafe qui prend un dictionnaire de contraintes dans son constructeur. Chaque clé est un nom d'attribut, et la valeur est le type attendu. Si on essaie d'assigner une valeur du mauvais type, la classe leve un TypeError.
Exemple : obj = TypeSafe({'nom': str, 'age': int}) obj.nom = 'Alice' # OK obj.age = 30 # OK obj.nom = 42 # TypeError obj.ville = 'Paris' # OK (pas de contrainte sur ville)
class TypeSafe:
def __init__(self, contraintes):
self.__dict__['_contraintes'] = contraintes
def __setattr__(self, name, value):
if name in self._contraintes:
type_attendu = self._contraintes[name]
if not isinstance(value, type_attendu):
raise TypeError(f"'{name}' doit etre de type {type_attendu.__name__}, pas {type(value).__name__}")
self.__dict__[name] = value