0

在 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())    
4

1 回答 1

0

据我所知,答案是否定的(基于使用 Python 的两年),但这很难证明。

但实际上,我不确定我会使用你那里的 ABC。将它用作 mixin 可能更有意义,让您清楚地删除init。Python 没有明确支持 mixins,但它支持多重继承,因此实现起来很简单。假设已达成一致,您将需要查找 Python 方法解析顺序 (MRO) 并确保您对类进行了正确排序。(在这种情况下,ValueType应该在之前object。)

于 2012-08-09T18:55:08.630 回答