Com relação aos Métodos Dúnder (ou Dunder, ou mágicos) em P...

Próximas questões
Com base no mesmo assunto
Q3881287 Programação
Com relação aos Métodos Dúnder (ou Dunder, ou mágicos) em Python, assinale V para a afirmativa verdadeira e F para a falsa.

( ) são funções especiais que começam e terminam com dois sublinhados onde são criadas variáveis privadas para evitar conflitos de nomes em herança.
( ) São métodos especiais onde o atributo (ou método) é destinado ao uso dentro do módulo ou classe
( ) são funções especiais que somente contém dois sublinhados no início (__nome), resultando em indicador “fraco” de uso interno.

As afirmativas são, respectivamente, 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

Fundamento decisivo: A decisão estava em distinguir __nome__, __nome__ e _nome no Python. A confusão entre essas convenções torna as três afirmativas falsas, o que leva a F–F–F.

Tema central: Métodos dúnder em Python
Análise das alternativas
A
Certa
A alternativa A está certa porque a questão cobra a distinção entre três formas de nomenclatura em Python. Métodos dúnder são nomes no formato __nome__. Já identificadores com dois sublinhados apenas no início, como __nome, sofrem name mangling para evitar conflitos em subclasses, e identificadores com um sublinhado inicial, como _nome, representam apenas convenção de uso interno. Como cada uma das três assertivas mistura essas categorias, a sequência correta é F–F–F.
B
Errada
Errada porque marca a 1ª assertiva como verdadeira, mas ela descreve __nome, com dois sublinhados iniciais e sem dois finais: name mangling para evitar conflitos em herança. Isso não define métodos dúnder, que têm formato __nome__.
C
Errada
Errada porque marca a 3ª assertiva como verdadeira. Nela, __nome é tratado como se fosse dúnder, mas dúnder é __nome__. Além disso, o indicador fraco de uso interno é _nome, com um único sublinhado inicial, não __nome.
D
Errada
Errada porque marca a 2ª assertiva como verdadeira, mas a ideia de atributo ou método destinado ao uso dentro do módulo ou classe corresponde à convenção _nome. Métodos dúnder não são marcação de uso interno.
E
Errada
Errada porque considera verdadeiras as três assertivas, quando nenhuma delas corresponde corretamente ao conceito de métodos dúnder. Todas confundem __nome__ com outras convenções de sublinhado em Python.
Pegadinha da questão
A pegadinha foi tratar qualquer nome com sublinhados duplos como se fosse dúnder, misturando __nome__ com __nome e ainda atribuindo a __nome o papel de indicador fraco de uso interno, que na verdade pertence a _nome.
Dica para questões semelhantes
  • Verifique se há dois sublinhados no início e no fim: só o formato __nome__ corresponde a nome especial da linguagem.
  • Se houver dois sublinhados apenas no início, como __nome, o ponto técnico é name mangling, não método dúnder.
  • Se houver um único sublinhado inicial, como _nome, o critério é convenção de uso interno, não privacidade real.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A alternativa correta é a A (F – F – F).

Para entender por que todas as afirmações são falsas, é preciso distinguir os Métodos Dunder das convenções de nomenclatura para encapsulamento em Python.

  1. "( ) são funções especiais... onde são criadas variáveis privadas para evitar conflitos de nomes em herança." (FALSA)
  • O erro: Os Métodos Dunder (como , , ) servem para sobrecarga de operadores e ganchos do ciclo de vida do objeto. O que evita conflitos em herança (o chamado Name Mangling) é o prefixo de duplo sublinhado apenas no início (ex: ), e não o formato dunder (início e fim).
  1. "( ) São métodos especiais onde o atributo (ou método) é destinado ao uso dentro do módulo ou classe" (FALSA)
  • O erro: Os métodos dunder são, na verdade, a interface pública que o Python usa para interagir com seus objetos de forma nativa. Por exemplo, quando você usa a função , o Python chama internamente . Eles não são "protegidos" ou destinados apenas ao uso interno da classe, mas sim à integração com a sintaxe da linguagem.
  1. "( ) são funções especiais que somente contém dois sublinhados no início (__nome), resultando em indicador “fraco” de uso interno." (FALSA)
  • O erro: Aqui há uma confusão tripla:
  • Dunder deve ter sublinhados no início e no fim ().
  • O indicador "fraco" de uso interno é apenas um sublinhado no início ().
  • Dois sublinhados no início () sem os dois no final ativam o Name Mangling, que é um indicador "forte" (privado).

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo