You should compare the actual values, not rely on the hashes.  Also, why use `__hash__` for self, but `hash()` for other?