Woah... so this is coercing it to a string and the address in hex is being compared. Am I off on this?
For generic objects, the __lt__ and __gt__ methods are simply defined the only way that's sensible, which is effectively as a pointer location comparison.