[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