ExpertiDict

Python · Avançado · Inglês · Técnico

NotImplemented

/nɑt ˈɪmpləˌmɛntɪd/substantivo

Valor especial que métodos de operador, como __eq__ e __add__, devolvem para indicar que não sabem lidar com aquele tipo, dando ao Python a chance de tentar o outro operando.

Onde usar

Quem implementa __eq__ deve devolver NotImplemented para tipos desconhecidos, e não False. Assim a comparação refletida funciona e o resultado final fica correto.

Em código

class Reais:
  def __init__(self, v):
    self.v = v

  def __eq__(self, o):
    if not isinstance(o, Reais):
      return NotImplemented
    return self.v == o.v

Exemplos

Return NotImplemented when the other type isn't supported.

Retorne NotImplemented quando o outro tipo não for suportado.

You raised NotImplemented, but it should be NotImplementedError.

Você deu raise em NotImplemented, mas devia ser NotImplementedError.

Cuidado

Não confunda com a exceção NotImplementedError, usada em métodos abstratos; NotImplemented é um valor que se devolve, não se levanta com raise.

Veja também

Todos os termos de Python