Prosty kod:Do czego służy zestaw funkcji, aby sprawdzić, czy dwa obiekty są różne?
>>> set([2,2,1,2,2,2,3,3,5,1])
set([1, 2, 3, 5])
Ok, w otrzymanych zestawów nie ma duplikatów. Co się stanie, jeśli obiekt na liście nie jest int, ale niektóre są zdefiniowane przeze mnie? Jaką metodę sprawdza, czy są różne? Zaimplementowałem __eq__ i __cmp__ z niektórymi obiektami, ale zestaw nie wydaje się ich używać: \
Czy ktoś wie, jak rozwiązać ten problem?
"wtedy i tylko wtedy" nie ma sensu, choć. Hash może być użyty do wstępnego wyboru równych pozycji, ale z pewnością musi też nastąpić bezpośrednie porównanie rzeczywistych wartości lub wyniki zestawionych porównań byłyby raczej losowe. –
Z dokumentacji pythona: Obiekt jest nieosiągalny, jeśli ma wartość skrótu, która nigdy nie zmienia się w trakcie jego trwania (wymaga metody __hash __()) i można ją porównać z innymi obiektami (wymaga __eq __() lub __cmp __() metoda). Obiekty z możliwością dopasowania, które są równe, muszą mieć tę samą wartość skrótu. –
edytowane w odpowiedzi użytkownika. – TheSoftwareJedi