Tôi đã tự hỏi về lý do có toán tử không bằng nhau trong python
.Tại sao có một toán tử không bằng nhau trong python
Sau đây snipped:
class Foo:
def __eq__(self, other):
print('Equal called')
return True
def __ne__(self, other):
print('Not equal called')
return True
if __name__ == '__main__':
a = Foo()
print(a == 1)
print(a != 1)
print(not a == 1)
kết quả đầu ra:
Equal called
True
Not equal called
True
Equal called
False
Không điều này thực sự mời rất nhiều rắc rối bởi khả năng nói:
A == B and A != B
có thể đúng ở cùng một lúc. Hơn nữa điều này giới thiệu một cạm bẫy tiềm năng khi quên thực hiện __ne__
.
Tối ưu hóa? Và điều này là trái với hợp đồng. –
* "Không có mối quan hệ ngụ ý giữa các toán tử so sánh. Sự thật của' x == y' không ngụ ý rằng 'x! = Y' là sai. Theo đó, khi định nghĩa' __eq __() ', ta cũng nên xác định' __ne __() 'để các toán tử hoạt động như mong đợi." * – CoryKramer
@CoryKramer Nó ở đâu? – vmonteco