From c766b31dbc34326c47247582574348ee7c3be05d Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Tue, 10 Jan 2012 07:55:17 +0000 Subject: [PATCH] Update the sorting howto to reflect the PEP 8 advisory to define all six rich comparisons. --- Doc/howto/sorting.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Doc/howto/sorting.rst b/Doc/howto/sorting.rst index acdf3ab086..9aa39f7e02 100644 --- a/Doc/howto/sorting.rst +++ b/Doc/howto/sorting.rst @@ -276,11 +276,15 @@ Odd and Ends >>> data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)] >>> assert sorted(data, reverse=True) == list(reversed(sorted(reversed(data)))) -* The sort routines are guaranteed to use :meth:`__lt__` when making comparisons - between two objects. So, it is easy to add a standard sort order to a class by - defining an :meth:`__lt__` method:: +* To create a standard sort order for a class, just add the appropriate rich + comparison methods: + >>> Student.__eq__ = lambda self, other: self.age == other.age + >>> Student.__ne__ = lambda self, other: self.age != other.age >>> Student.__lt__ = lambda self, other: self.age < other.age + >>> Student.__le__ = lambda self, other: self.age <= other.age + >>> Student.__gt__ = lambda self, other: self.age > other.age + >>> Student.__ge__ = lambda self, other: self.age >= other.age >>> sorted(student_objects) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] -- 2.50.1