Les méthodes dunder sont les méthodes spéciales à double tiret bas vers lesquelles la syntaxe Python redirige. Appeler len sur un objet invoque dunder len, l'opérateur plus invoque dunder add, et une boucle for invoque dunder iter. Les implémenter fait que votre classe se comporte comme un type natif, donc les protocoles du langage fonctionnent sur vos objets au lieu que vous inventiez des noms de méthodes maison.
Pourquoi les recruteurs posent cette question
Cela distingue ceux qui écrivent du Python de ceux qui écrivent un autre langage avec la syntaxe Python. Le recruteur veut entendre l'idée de protocole : que le duck typing dans CPython est implémenté via ces points d'accroche, et que le bon réflexe est d'implémenter le protocole plutôt que de coller une méthode appelée to_string. Savoir quel dunder choisir, par exemple repr contre str, signale une aisance quotidienne.
Comment structurer votre réponse
- Définissez-les comme des points d'accroche appelés par la syntaxe.
- Donnez deux ou trois correspondances concrètes.
- Expliquez l'idée de protocole derrière tout cela.
- Nommez celles que vous implémentez le plus souvent.
Exemple de réponse
Ce sont les points d'accroche que l'interpréteur appelle quand vous utilisez de la syntaxe. L'accès par crochets va vers dunder getitem, le mot-clé in vers dunder contains, l'égalité vers dunder eq, et ainsi de suite. L'idée est que Python définit le comportement par des protocoles plutôt que par des interfaces dont on hérite, donc si mon objet implémente dunder iter et dunder next, c'est un itérateur, point, aucune classe de base requise. En pratique celles que j'implémente le plus sont repr, eq et hash. Repr surtout, parce qu'un bon repr qui montre les champs identifiants transforme une session de débogage inutile en une session de cinq minutes, alors que les object at 0x7f par défaut ne vous apprennent rien. Je fais attention à traiter eq et hash ensemble, puisque définir eq sans hash rend les instances non hachables et elles cessent silencieusement de fonctionner comme clés de dictionnaire. Sur un modèle métier que j'ai construit, ajouter dunder lt nous a permis de trier les enregistrements avec le sorted natif au lieu de passer une fonction key partout.
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
- Quelle est la différence entre repr et str ?
- Pourquoi eq et hash doivent-ils être cohérents ?
- En quoi dunder getattr diffère-t-il de getattribute ?
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