Nhìn qua decimal.py
, nó sử dụng NotImplemented
trong nhiều phương pháp đặc biệt. ví dụ.Hằng số không thực hiện của Python
class A(object):
def __lt__(self, a):
return NotImplemented
def __add__(self, a):
return NotImplemented
Các Python docs say:
NotImplemented
giá trị đặc biệt mà có thể được trả lại bởi “so sánh giàu” phương pháp đặc biệt (
__eq__()
,__lt__()
, và bạn bè), để cho biết rằng việc so sánh không được triển khai với đối với loại khác.
Nó không nói về các phương pháp đặc biệt khác và cũng không mô tả hành vi.
Có vẻ như đó là một vật thể ma thuật nếu trả về từ các phương pháp đặc biệt khác tăng TypeError
và trong các phương pháp đặc biệt "so sánh phong phú" thì không có gì.
ví dụ:
print A() < A()
in True
, nhưng
print A() + 1
tăng TypeError
, vì vậy tôi tò mò về những gì đang xảy ra và việc sử dụng/hành vi của NotImplemented là gì.
Tất cả đều đúng. Bạn đã mô tả hoàn toàn NotImplemented. Câu hỏi là gì? –
câu hỏi của tôi là nếu trong doc, nó đặc biệt đề cập đến phương pháp đặc biệt "so sánh giàu", phương pháp khác nên bỏ qua nó, sau khi nó chỉ là một đối tượng khác, tôi không thể tìm thấy doc giải thích hành vi chung hoặc cách xử lý NotImplemented –