Mirando a través de decimal.py
, usa NotImplemented
en muchos métodos especiales. p.ej.Constante Python NotImplemented
class A(object):
def __lt__(self, a):
return NotImplemented
def __add__(self, a):
return NotImplemented
El Python docs say:
NotImplemented
valor especial que puede ser devuelto por los “ricos comparación” métodos especiales (
__eq__()
,__lt__()
, y amigos), para indicar que la comparación no está implementada con respecto del otro tipo.
No habla de otros métodos especiales y tampoco describe el comportamiento.
Parece ser un objeto mágico que si se devuelve desde otros métodos especiales aumenta TypeError
, y en "comparación rica" los métodos especiales no hacen nada.
p. Ej.
print A() < A()
impresiones True
, pero
print A() + 1
plantea TypeError
, así que estoy curioso en cuanto a lo que está pasando y lo que es el uso/comportamiento de NotImplemented.
Todo correcto. Usted ha descrito completamente NotImplemented. ¿Cuál es la pregunta? –
mi pregunta era que si en el documento, menciona especialmente métodos especiales de "comparación enriquecida", otros métodos deberían ignorarlo, después de todo, es solo otro objeto, no pude encontrar el documento explicando el comportamiento general o cómo manejar NotImplemented –