mirror of https://github.com/python/cpython
Issue 5479: Add functools.total_ordering class decorator.
This commit is contained in:
parent
88623d76b4
commit
20ae90d887
|
@ -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])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue