On Sun, Jul 26, 2020 at 11:01 PM Ethan Furman <et...@stoneleaf.us> wrote:

> On 7/26/20 10:31 AM, Henry Lin wrote:
>
> > You're right, declaring `__eq__` for the class we want to compare would
> > solve this issue. However, we have the tradeoff that
> >
> >   * All classes need to implement the `__eq__` method to compare two
> >     instances;
>
> I usually implement __eq__ sooner or later anyway -- even if just for
> testing.
>
> >   * Any class implementing the `__eq__` operator is no longer hashable
>
> One just needs to define a __hash__ method that behaves properly.
>

This is quite a significant change in behaviour which may break
compatibility. Equality and hashing based only on identity can be quite a
useful property which I often rely on.

There's another reason people might find this useful - if the objects have
differing attributes, the assertion can show exactly which ones, instead of
just saying that the objects are not equal. Even if all the involved
classes implement a matching repr, which is yet more work, the reprs will
likely be on a single line and the diff will be difficult to read.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/ZJYGN42PCO4J73AAM7ZZSVTOFHPBADWT/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to