Python では、等値が特定のデータに基づく必要があるクラスの等値とハッシュをオーバーライドしなければならないことがよくあります。私は通常、これをこのようなスーパークラスに抽象化することになりますが、Python にこのようなものが組み込まれているのか疑問に思っていました。それは一般的なタスクのようです。
class ValueType(object):
def __init__(self, *args, **kwargs): super(ValueType, self).__init__(*args, **kwargs)
def __eq__(self, other): return self._key() == other._key()
def __ne__(self, other): return self._key() != other._key()
def __hash__(self): return hash(self._key())