Hãy xem xét đoạn mã này:Python 2: ý nghĩa khác nhau của 'trong' từ khóa cho bộ và danh sách
class SomeClass(object):
def __init__(self, someattribute="somevalue"):
self.someattribute = someattribute
def __eq__(self, other):
return self.someattribute == other.someattribute
def __ne__(self, other):
return not self.__eq__(other)
list_of_objects = [SomeClass()]
print(SomeClass() in list_of_objects)
set_of_objects = set([SomeClass()])
print(SomeClass() in set_of_objects)
mà đánh giá để:
True
False
bất cứ ai có thể giải thích lý do tại sao 'trong' từ khóa có một ý nghĩa khác cho các bộ và danh sách? Tôi đã mong đợi cả hai để trả về True, đặc biệt là khi loại đang được thử nghiệm có phương pháp bình đẳng được xác định.
Xem http://stackoverflow.com/questions/7549709/unexpected-behavior-for-python-set-contains .. tình cờ, trong Python 3 chạy mã này gợi ý những gì đang xảy ra: "TypeError: unhashable type: ' SomeClass '" – DSM
Cảm ơn tất cả mọi người, tất cả đã rõ ràng. – mskel
BTW, bạn biết rằng 'someattribute' của bạn ở đây là thuộc tính ** class ** chứ không phải thuộc tính ** instance **, đúng không? Bạn * có * nghe nói về '__init__', phải không? –