object.__cmp__
Позволяет реализовать сравнение экземпляров пользовательских типов.
object.__cmp__(self, other)
-> int
self -- Ссылка на экземпляр.
other -- Объект с которым следует произвести сравнение (справа от оператора сравнения).
other -- Объект с которым следует произвести сравнение (справа от оператора сравнения).
На заметку
Вызывается операторами сравнения в случае, если методы «богатого» сравнения не определены.
Должен возвращать целое:
self < other | отрицательное |
self == other | нуль |
self > other | положительное |
class Moon(object):
r = 1737.10
def __cmp__(self, other):
return self.r - other.r
class Earth(object):
r = 6371.0
def __cmp__(self, other):
return self.r - other.r
my_moon = Moon()
my_moon_dub = Moon()
my_earth = Earth()
# Используют Moon.__cmp__
my_moon == my_earth # False
my_moon != my_earth # True
my_moon > my_earth # False
my_moon < my_earth # True
my_moon >= my_earth # False
my_moon <= my_earth # True
my_moon == my_moon_dub # True
Если не определены, ни этот метод, ни __eq__(), ни __ne__(), экземпляры сравниваются по их идентификаторам («адресам»).
Для получения дополнительной важной информации об использовании «богатого сравнения» при создании объектов, поддерживающих хеширование, которые могут использоваться в качестве ключей в словарях смотрите object.__hash__().
+py1.5 Устранено ограничение, когда исключения из метода не поднимались.
Синонимы поиска: object.__cmp__, object, __cmp__
В разделе «object (объект)»:
file (файл)
object.__add__
object.__bool__
object.__call__
object.__ceil__
object.__class__
object.__contains__
object.__copy__
object.__deepcopy__
object.__del__
object.__delattr__
object.__delete__
object.__delitem__
object.__delslice__
object.__dir__
object.__enter__
object.__eq__
object.__exit__
object.__floor__
object.__format__
object.__ge__
object.__get__
object.__getattr__
object.__getattribute__
object.__getitem__
object.__getslice__
object.__getstate__
object.__gt__
object.__hash__
object.__init__
object.__init_subclass__
object.__iter__
object.__le__
object.__len__
object.__lt__
object.__missing__
object.__ne__
object.__new__
object.__next__
object.next
object.__nonzero__
object.__qualname__
object.__rcmp__
object.__repr__
object.__reversed__
object.__set__
object.__setattr__
object.__setitem__
object.__set_name__
object.__setslice__
object.__setstate__
object.__slots__
object.__str__
object.__sub__
object.__subclasses__
object.__unicode__
property (свойство)
Protocols (протоколы)
slice (срез)
Встроенные исключения
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.