Consider these two examples: >>> {0} == {0.0} == {False} True >>> hash(0) == hash(0.0) == hash(False) True >>> 0.0 in {False} True
>>> class mystr(str): pass >>> 'hi' in {mystr('hi')} True The original poster want a way to obtain the actual object that is in the set, rather than just a truth value. This can be done in O(n) time, by iterating through the set. However, better is possible. Here's are examples, followed by implementaion. >>> from hashhack import HashHack >>> HashHack(2) in {2} (<class 'int'>, 2) False >>> HashHack(2) in {2.0} (<class 'float'>, 2.0) False Here's the implementation. <BEGIN> class HashHack: def __init__(self, obj): self.hash_obj = hash(obj) def __hash__(self): return self.hash_obj def __eq__(self, other): print((type(other), other)) return False <END> Looking at this URL helped me https://stackoverflow.com/questions/3588776/how-is-eq-handled-in-python-and-in-what-order -- Jonathan
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/HU2HJ4LDMAYKZUHMLLAQARDWSLJKWCGO/ Code of Conduct: http://python.org/psf/codeofconduct/