Prenez une dataclass pour des structures internes mutables où vous voulez des attributs ordinaires et un init, un repr et un eq offerts. Prenez un NamedTuple quand vous voulez un enregistrement immuable, façon tuple, qui se déballe et se hache pour pas cher. Prenez Pydantic aux frontières du système, là où vous avez besoin de validation à l'exécution, de conversion et de sérialisation pour des données qui arrivent par HTTP, par fichier de configuration ou par file de messages.
Pourquoi les recruteurs posent cette question
Il y a quatre ou cinq façons de déclarer un enregistrement en Python moderne, et le recruteur veut savoir si vous choisissez délibérément au lieu de reprendre ce que vous avez utilisé la dernière fois. L'idée clé qu'il guette est que les annotations de type d'une dataclass ne sont pas vérifiées à l'exécution, donc la validation est exactement ce que Pydantic vous achète, et que payer la validation sur chaque objet interne est du travail gaspillé.
Comment structurer votre réponse
- Triez les trois selon l'origine des données.
- Dites que les annotations d'une dataclass ne sont pas vérifiées à l'exécution.
- Donnez l'angle immuabilité et hachage pour NamedTuple.
- Énoncez votre choix par défaut et la règle de frontière.
Exemple de réponse
Ma règle, c'est que Pydantic garde les bords et que les dataclasses vivent à l'intérieur. Tout ce qui franchit une frontière, un corps de requête, une configuration d'environnement, un message pris dans une file, reçoit un modèle Pydantic parce que je veux que ce soit validé et converti une fois, bruyamment, au point d'arrivée. Tout ce qui est en aval peut être une simple dataclass avec slots activé, puisque je sais déjà que les données sont bonnes et que je ne veux pas payer le coût de validation sur chaque objet construit dans une boucle. Ce que les gens ratent, c'est qu'annoter un champ de dataclass comme int ne fait rien à l'exécution : passez une chaîne et elle stockera la chaîne sans broncher. NamedTuple, je m'en sers moins, surtout pour de petits enregistrements immuables qui doivent servir de clés de dictionnaire ou être déballés, comme une paire de coordonnées ou une clé de cache. Sur un service sur lequel j'ai travaillé, passer un chemin critique interne des modèles Pydantic à des dataclasses avec slots a réduit sensiblement la durée d'un job par lots, uniquement en évitant de revalider des données déjà vérifiées.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Que fait slots égale True sur une dataclass ?
- Comment rendez-vous une dataclass immuable ?
- Qu'est-ce qui a changé entre Pydantic v1 et v2 ?
Autres questions pour Développeur Python
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions