From: Raymond Hettinger Date: Sun, 4 Apr 2010 01:24:59 +0000 (+0000) Subject: Issue 5479: Add functools.total_ordering class decorator. X-Git-Tag: v2.7b1~82 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20ae90d887a00c713899f8901ee4635ed0332595;p=python Issue 5479: Add functools.total_ordering class decorator. --- diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst index a09d3cf725..8f9528a157 100644 --- a/Doc/library/functools.rst +++ b/Doc/library/functools.rst @@ -17,6 +17,26 @@ function for the purposes of this module. The :mod:`functools` module defines the following functions: +.. function:: total_ordering(cls) + + Given a class defining one or more rich comparison ordering methods, this + class decorator supplies the rest. This simplies the effort involved + in specifying all of the possible rich comparison operations: + + The class must define one of :meth:`__lt__`, :meth:`__le__`, + :meth:`__gt__`, or :meth:`__ge__`. + In addition, the class should supply an :meth:`__eq__` method. + + For example:: + + @total_ordering + class Student: + def __eq__(self, other): + return ((self.lastname.lower(), self.firstname.lower()) == + (other.lastname.lower(), other.firstname.lower())) + def __lt__(self, other): + return ((self.lastname.lower(), self.firstname.lower()) < + (other.lastname.lower(), other.firstname.lower())) .. function:: reduce(function, iterable[, initializer])