[pypy-issue] [issue847] Old style class equality test failure
Armin Rigo
tracker at bugs.pypy.org
Fri Aug 26 15:11:52 CEST 2011
Armin Rigo <armin.rigo at gmail.com> added the comment:
One problem is that the comparison operators behave subtly differently than the
other operations; that's why these three lines don't work for them.
For example, if class Base defines __eq__, and class Sub(Base) doesn't, then
Base() == Sub() will still be called first with the arguments switched; this is
different from e.g. __add__.
And of course this rule applies only to new-style classes, not to old-style
classes. For old-style classes, instead, we have a 3rd version of the rule,
which is that the order to try both operations is never reversed by subclassing
relationships between operands.
I checked in something that seems to make my hopefully exhaustive tests happy...
----------
status: chatting -> testing
________________________________________
PyPy bug tracker <tracker at bugs.pypy.org>
<https://bugs.pypy.org/issue847>
________________________________________
More information about the pypy-issue
mailing list