[Python-ideas] incremental hashing in __hash__
Brendan Barnwell
brenbarn at brenbarn.net
Fri Dec 30 20:13:02 EST 2016
On 2016-12-30 17:04, Ethan Furman wrote:
> On 12/30/2016 04:31 PM,jab at math.brown.edu wrote:
>>> On Fri, Dec 30, 2016 at 7:20 PM, Ethan Furman wrote:
>>>>> If you are relying on an identity check for equality then no
>>>>> two FrozenOrderedCollection instances can be equal. Was that
>>>>> your intention? It it was, then just hash the instance's
>>>>> id() and you're done.
>>>
>>> No, I was talking about the identity check done by a set or dict
>>> when doing a lookup to check if the object in a hash bucket is
>>> identical to the object being looked up. In that case, there is
>>> no need for the set or dict to even call __eq__. Right?
> No. It is possible to have two keys be equal but different -- an
> easy example is 1 and 1.0; they both hash the same, equal the same,
> but are not identical. dict has to check equality when two different
> objects hash the same but have non-matching identities.
I think that is the same as what he said. The point is that if they
*are* the same object, you *don't* need to check equality.
--
Brendan Barnwell
"Do not follow where the path may lead. Go, instead, where there is no
path, and leave a trail."
--author unknown
More information about the Python-ideas
mailing list