I have a trivial class that has no members, but I can apparently still use relational comparison operators:
>>> class A(object): pass
...
>>> 1 < A()
True
>>> A() < 1
False
Furthermore, any int or double compares less than A()
. Strings compare greater than A()
:
>>> 'hi' < A()
False
A()
inconsistently compares against itself:
>>> A() < A()
True
>>> A() < A()
False
But never to B
:
>>> class B: pass
...
>>> A() < B()
False
>>> A() < B()
False
>>> A() < B()
False
How is this not an error? What sorcery is this?!