Issue 5479: Add functools.total_ordering class decorator.

This commit is contained in:
Raymond Hettinger 2010-04-04 01:24:59 +00:00
parent 88623d76b4
commit 20ae90d887
1 changed files with 20 additions and 0 deletions

View File

@ -17,6 +17,26 @@ function for the purposes of this module.
The :mod:`functools` module defines the following functions: 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]) .. function:: reduce(function, iterable[, initializer])