Przeglądając decimal.py
, używa on NotImplemented
w wielu specjalnych metodach. na przykładPython niezmodyfikowany stała
class A(object):
def __lt__(self, a):
return NotImplemented
def __add__(self, a):
return NotImplemented
NotImplemented
wartość specjalne, które mogą zostać zwrócone przez „bogate porównania” metod specjalnych (
__eq__()
,__lt__()
, i znajomych), aby wskazać, porównanie nie jest zaimplementowane z względem drugiego typu.
Nie mówi o innych specjalnych metodach i nie opisuje zachowania.
Wydaje się, że jest to magiczny obiekt, który po zwrocie z innych specjalnych metod podnosi TypeError
, a w "bogatym porównaniu" specjalne metody nic nie robią.
np.
print A() < A()
drukuje True
, ale
print A() + 1
podnosi TypeError
, więc jestem ciekaw, co się dzieje i co jest wykorzystanie/zachowanie NotImplemented.
Wszystko poprawnie. Całkowicie opisałeś NotImplemented. Jakie jest pytanie? –
moje pytanie brzmiało, że jeśli w dokumencie, to specjalnie wymienia specjalne metody "bogatego porównania", inne metody powinny je ignorować, w końcu to tylko kolejny obiekt, nie mogłem znaleźć dokumentu wyjaśniającego ogólne zachowanie lub jak radzić sobie z NotImplemented –