Pergunta de entrevista para Desenvolvedor Python

O que são métodos dunder e como eles se encaixam no data model?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Métodos dunder são os métodos especiais com underscores duplos para os quais a sintaxe do Python despacha. Chamar len num objeto invoca dunder len, o operador de mais invoca dunder add, e um loop for invoca dunder iter. Implementá-los faz sua classe se comportar como um tipo nativo, então os protocolos da linguagem funcionam nos seus objetos em vez de você inventar nomes de métodos customizados.

Por que os entrevistadores perguntam isso

Isso distingue quem escreve Python de quem escreve outra linguagem com sintaxe de Python. O entrevistador quer ouvir a ideia de protocolo: que duck typing no CPython é implementado através desses ganchos, e que o instinto certo é implementar o protocolo em vez de pendurar um método chamado to_string. Saber qual dunder escolher, como repr versus str, sinaliza fluência do dia a dia.

Como estruturar sua resposta

  • Defina-os como ganchos que a sintaxe chama.
  • Dê dois ou três mapeamentos concretos.
  • Explique a ideia de protocolo por trás deles.
  • Cite os que você implementa com mais frequência.

Exemplo de resposta

Exemplo falado, em primeira pessoa

São os ganchos que o interpretador chama quando você usa sintaxe. Acesso por colchetes vai para dunder getitem, a palavra in vai para dunder contains, igualdade vai para dunder eq, e assim por diante. O ponto é que o Python define comportamento como protocolos em vez de interfaces que você herda, então se meu objeto implementa dunder iter e dunder next ele é um iterador, ponto final, sem classe base nenhuma. Na prática os que eu mais implemento são repr, eq e hash. O repr especialmente, porque um bom repr mostrando os campos identificadores transforma uma sessão inútil de depuração numa de cinco minutos, enquanto o object at 0x7f padrão não te diz nada. Sou cuidadoso com eq e hash juntos, já que definir eq sem hash deixa as instâncias não hasheáveis e elas param de funcionar como chaves de dict silenciosamente. Num modelo de domínio que construí, adicionar dunder lt deixou a gente ordenar registros com o sorted nativo em vez de passar uma função key em todo lugar.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Qual é a diferença entre repr e str?
  • Por que eq e hash precisam concordar?
  • Como o dunder getattr difere do getattribute?

Mais perguntas para Desenvolvedor Python

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot