class x:
def __init__(self,name):
self.name=name
def __str__(self):
return self.name
def __cmp__(self,other):
print("cmp method called with self="+str(self)+",other="+str(other))
return self.name==other.name
# return False
instance1=x("hello")
instance2=x("there")
print(instance1==instance2)
print(instance1.name==instance2.name)
Sản lượng ở đây là:__cmp__ phương pháp này không hoạt động như mong đợi trong Python 2.x?
cmp method called with self=hello,other=there
True
False
Mà không phải là những gì tôi mong đợi: Tôi đang cố gắng để nói 'hai trường hợp đều bình đẳng nếu các lĩnh vực tên đều bình đẳng'.
Nếu tôi chỉ đơn giản là return False
từ chức năng __cmp__
, điều này cũng báo cáo là True
! Nếu tôi trả lại -1
, thì tôi nhận được False
- nhưng vì tôi đang cố gắng so sánh các chuỗi, điều này không cảm thấy đúng.
Tôi đang làm gì sai ở đây?
Thankyou - bạn nhận được dấu tích (mặc dù những người khác cung cấp thông tin tương tự), vì đây là giải thích rõ ràng nhất! – monojohnny
Khi người khác nhận xét, __cmp __() đã lỗi thời. Xác định __lt __(), __eq __() và __gt __() để thay thế. Theo http://docs.python.org/dev/whatsnew/3.0.html#ordering-comparisons – smci