Vì Python không cung cấp các phiên bản trái/phải của các toán tử so sánh, nên nó quyết định chức năng nào để gọi?Cách __eq__ được xử lý bằng Python và theo thứ tự nào?
class A(object):
def __eq__(self, other):
print "A __eq__ called"
return self.value == other
class B(object):
def __eq__(self, other):
print "B __eq__ called"
return self.value == other
>>> a = A()
>>> a.value = 3
>>> b = B()
>>> b.value = 4
>>> a == b
"A __eq__ called"
"B __eq__ called"
False
Điều này dường như gọi cả hai chức năng __eq__
. Chỉ cần tìm cây quyết định chính thức.
Hoàn toàn đúng. Và tóm lại, những bài kiểm tra đó có lẽ nên là "return self.value == other.value". –
Cảm ơn Ned! Chỉ cần một số Guy: Nó phụ thuộc vào những gì bạn đang tìm kiếm. Ví dụ, giả sử tôi muốn: a == 3 và a == b cho cả hai là đúng (với b.value thay đổi thành 3). – PyProg