Python ma singleton o nazwie NotImplemented
.
Dlaczego ktoś miałby kiedykolwiek wracać NotImplemented
zamiast zgłaszać NotImplementedError
wyjątek? Czy nie utrudni to tylko znalezienia błędów, takich jak kod, który wykonuje nieprawidłowe metody?
a.__eq__(b)
zwrócił NotImplemented, czy nie może równie łatwo złapać NotImplementedError (i wywołać,b.__eq__(a)
czy cokolwiek innego)?Ponieważ mają różne przypadki użycia.
Cytując dokumenty (Python 3.6):
Nie zaimplementowano
wyjątek NotImplementedError
Zobacz linki po szczegóły.
źródło
Jednym z powodów jest wydajność. W sytuacji takiej jak rozbudowane porównania, w których można wykonać wiele operacji w krótkim czasie, konfigurowanie i obsługa wielu wyjątków może zająć dużo więcej czasu niż zwykłe zwrócenie
NotImplemented
wartości.źródło