Python · Avançado · Inglês · Técnico
NotImplemented
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.vExemplos
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.