On 3/18/2014 3:52 AM, Maciej Fijalkowski wrote:
Hi

I have a question about calling __eq__ in some cases.

We're thinking about doing an optimization where say:

if x in d:
    return d[x]

if d.__contains__(x): return d.__getitem__(x)

I do not see any requirement to call x.__eq__ any particular number of times. The implementation of d might always call somekey.__eq__(x). The concept of sets (and dicts) requires coherent equality comparisons.

where d is a dict would result in only one dict lookup (the second one
being constant folded away). The question is whether it's ok to do it,
despite the fact that it changes the semantics on how many times
__eq__ is called on x.

A __eq__ that has side-effects violates the intended and expected semanitics of __eq__.

--
Terry Jan Reedy

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to