Is there a way to test whether a costume class had explicitly defined an attribute like __gt__? To put things in context consider these two classes:
class myclass1:
def __init__(self, val):
self.val = val
def __gt__(self, other):
if type(other) is int:
return self.val > other
else:
return self.val > other.val
class myclass2:
def __init__(self, val):
self.val = val
Since I've defined an inequality attribute only for myclass1 and not for myclass2 calling
x1 = myclass1(5); x2 = myclass2(2)
x1 > x2
x2 < x1
will use myclass1.__gt__ in both cases. Had I defined myclass2.__lt__, the last line would have invoked it. But I didn't. So x1's __gt__ takes hold in both calls. I think I understand this (but comments are welcomed).
So my question: Is there a way to know which inequalities had been explicitly defined for a custom class? Because
hasattr(x2, '__gt__')
returns True anyway.