<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, Mar 7, 2017 at 4:53 PM David Mertz <<a href="mailto:mertz@gnosis.cx">mertz@gnosis.cx</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div dir="ltr" class="gmail_msg"><span dir="ltr" class="gmail_msg"></span> <br><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">I<font class="gmail_msg" face="monospace, monospace">n [22]: class Eq(int):</font></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><font class="gmail_msg" face="monospace, monospace">    def __eq__(self, other):</font></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><font class="gmail_msg" face="monospace, monospace">        return True</font></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><font class="gmail_msg" face="monospace, monospace">   ....:</font></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><span style="font-family:monospace,monospace" class="gmail_msg">In [23]: four, five, six = Eq(4), Eq(5), Eq(6)</span><br class="gmail_msg"></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><span style="font-family:monospace,monospace" class="gmail_msg">In [24]: lst = [four, five, six]</span><br class="gmail_msg"></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><span style="font-family:monospace,monospace" class="gmail_msg">In [25]: lst.count(Eq(7))</span><br class="gmail_msg"></div></div></div><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><font class="gmail_msg" face="monospace, monospace">Out[25]: 3 </font></div></div></div></blockquote><div class="gmail_extra gmail_msg"><br class="gmail_msg"></div><div class="gmail_extra gmail_msg">How would this work (other than saying "don't do that it's perverse")?</div></div></div></div></blockquote><div><br></div><div>There would be two needless checks in the equality testing. First, PyObject_RichCompareBool would see if other is a subclass of self, in which case other->tp_richcompare would be used iff. it is non-null. Otherwise, we would check if self->tp_richcompare is non-null, the check would pass, and we would call self.__eq__. See the flow chart on my poster (linked to in the first email on this thread). <br></div></div></div>