Mercurial > cpython-lru_cache-weakref
diff Lib/numbers.py @ 44202:71ad5e2bedda
Small set of updates (with Jeffrey's OK).
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 06 Dec 2007 17:45:33 +0000 |
| parents | 1f9eee08ab35 |
| children | 6f049ca55e06 |
line wrap: on
line diff
--- a/Lib/numbers.py Thu Dec 06 13:32:14 2007 +0000 +++ b/Lib/numbers.py Thu Dec 06 17:45:33 2007 +0000 @@ -43,6 +43,7 @@ Inexact.register(complex) Inexact.register(float) +# Inexact.register(decimal.Decimal) class Complex(Number): @@ -97,7 +98,7 @@ def __pos__(self): """+self""" - return self + raise NotImplementedError def __sub__(self, other): """self - other""" @@ -119,7 +120,7 @@ @abstractmethod def __div__(self, other): - """self / other""" + """self / other; should promote to float or complex when necessary.""" raise NotImplementedError @abstractmethod @@ -129,7 +130,7 @@ @abstractmethod def __pow__(self, exponent): - """Like division, self**exponent should promote to complex when necessary.""" + """self**exponent; should promote to float or complex when necessary.""" raise NotImplementedError @abstractmethod @@ -152,9 +153,7 @@ """self == other""" raise NotImplementedError - def __ne__(self, other): - """self != other""" - return not (self == other) + # __ne__ is inherited from object and negates whatever __eq__ does. Complex.register(complex) @@ -180,8 +179,30 @@ """trunc(self): Truncates self to an Integral. Returns an Integral i such that: - * i>0 iff self>0 - * abs(i) <= abs(self). + * i>0 iff self>0; + * abs(i) <= abs(self); + * for any Integral j satisfying the first two conditions, + abs(i) >= abs(j) [i.e. i has "maximal" abs among those]. + i.e. "truncate towards 0". + """ + raise NotImplementedError + + @abstractmethod + def __floor__(self): + """Finds the greatest Integral <= self.""" + raise NotImplementedError + + @abstractmethod + def __ceil__(self): + """Finds the least Integral >= self.""" + raise NotImplementedError + + @abstractmethod + def __round__(self, ndigits:"Integral"=None): + """Rounds self to ndigits decimal places, defaulting to 0. + + If ndigits is omitted or None, returns an Integral, otherwise + returns a Real. Rounds half toward even. """ raise NotImplementedError @@ -241,7 +262,7 @@ @property def real(self): """Real numbers are their real component.""" - return self + return +self @property def imag(self): @@ -250,9 +271,10 @@ def conjugate(self): """Conjugate is a no-op for Reals.""" - return self + return +self Real.register(float) +# Real.register(decimal.Decimal) class Rational(Real, Exact): @@ -358,7 +380,7 @@ @property def numerator(self): """Integers are their own numerators.""" - return self + return +self @property def denominator(self):
