You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
852 B
27 lines
852 B
6 years ago
|
class ComparableMixin(object):
|
||
|
def _compare(self, other, method):
|
||
|
try:
|
||
|
return method(self._cmpkey(), other._cmpkey())
|
||
|
except (AttributeError, TypeError):
|
||
|
# _cmpkey not implemented, or return different type,
|
||
|
# so I can't compare with "other".
|
||
|
return NotImplemented
|
||
|
|
||
|
def __lt__(self, other):
|
||
|
return self._compare(other, lambda s, o: s < o)
|
||
|
|
||
|
def __le__(self, other):
|
||
|
return self._compare(other, lambda s, o: s <= o)
|
||
|
|
||
|
def __eq__(self, other):
|
||
|
return self._compare(other, lambda s, o: s == o)
|
||
|
|
||
|
def __ge__(self, other):
|
||
|
return self._compare(other, lambda s, o: s >= o)
|
||
|
|
||
|
def __gt__(self, other):
|
||
|
return self._compare(other, lambda s, o: s > o)
|
||
|
|
||
|
def __ne__(self, other):
|
||
|
return self._compare(other, lambda s, o: s != o)
|