Commit d4256302 authored by Guido van Rossum's avatar Guido van Rossum

Small set of updates (with Jeffrey's OK).

parent 280ca080
...@@ -43,6 +43,7 @@ class Inexact(Number): ...@@ -43,6 +43,7 @@ class Inexact(Number):
Inexact.register(complex) Inexact.register(complex)
Inexact.register(float) Inexact.register(float)
# Inexact.register(decimal.Decimal)
class Complex(Number): class Complex(Number):
...@@ -97,7 +98,7 @@ class Complex(Number): ...@@ -97,7 +98,7 @@ class Complex(Number):
def __pos__(self): def __pos__(self):
"""+self""" """+self"""
return self raise NotImplementedError
def __sub__(self, other): def __sub__(self, other):
"""self - other""" """self - other"""
...@@ -119,7 +120,7 @@ class Complex(Number): ...@@ -119,7 +120,7 @@ class Complex(Number):
@abstractmethod @abstractmethod
def __div__(self, other): def __div__(self, other):
"""self / other""" """self / other; should promote to float or complex when necessary."""
raise NotImplementedError raise NotImplementedError
@abstractmethod @abstractmethod
...@@ -129,7 +130,7 @@ class Complex(Number): ...@@ -129,7 +130,7 @@ class Complex(Number):
@abstractmethod @abstractmethod
def __pow__(self, exponent): 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 raise NotImplementedError
@abstractmethod @abstractmethod
...@@ -152,9 +153,7 @@ class Complex(Number): ...@@ -152,9 +153,7 @@ class Complex(Number):
"""self == other""" """self == other"""
raise NotImplementedError raise NotImplementedError
def __ne__(self, other): # __ne__ is inherited from object and negates whatever __eq__ does.
"""self != other"""
return not (self == other)
Complex.register(complex) Complex.register(complex)
...@@ -180,8 +179,30 @@ class Real(Complex): ...@@ -180,8 +179,30 @@ class Real(Complex):
"""trunc(self): Truncates self to an Integral. """trunc(self): Truncates self to an Integral.
Returns an Integral i such that: Returns an Integral i such that:
* i>0 iff self>0 * i>0 iff self>0;
* abs(i) <= abs(self). * 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 raise NotImplementedError
...@@ -241,7 +262,7 @@ class Real(Complex): ...@@ -241,7 +262,7 @@ class Real(Complex):
@property @property
def real(self): def real(self):
"""Real numbers are their real component.""" """Real numbers are their real component."""
return self return +self
@property @property
def imag(self): def imag(self):
...@@ -250,9 +271,10 @@ class Real(Complex): ...@@ -250,9 +271,10 @@ class Real(Complex):
def conjugate(self): def conjugate(self):
"""Conjugate is a no-op for Reals.""" """Conjugate is a no-op for Reals."""
return self return +self
Real.register(float) Real.register(float)
# Real.register(decimal.Decimal)
class Rational(Real, Exact): class Rational(Real, Exact):
...@@ -358,7 +380,7 @@ class Integral(Rational): ...@@ -358,7 +380,7 @@ class Integral(Rational):
@property @property
def numerator(self): def numerator(self):
"""Integers are their own numerators.""" """Integers are their own numerators."""
return self return +self
@property @property
def denominator(self): def denominator(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment