diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2008-02-12 21:40:53 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2008-02-12 21:40:53 (GMT) |
commit | 0aa52a1658adee3c9ccf32e87f5034a188592b49 (patch) | |
tree | 30d99ff76f1a04ee6000d094857e19bd3ee16d00 /Lib | |
parent | e1b824793a4b10d5119459b47546b122a17c18b4 (diff) | |
download | cpython-0aa52a1658adee3c9ccf32e87f5034a188592b49.zip cpython-0aa52a1658adee3c9ccf32e87f5034a188592b49.tar.gz cpython-0aa52a1658adee3c9ccf32e87f5034a188592b49.tar.bz2 |
Revert change in r60712: turn alternate constructors back into
classmethods instead of staticmethods.
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/fractions.py | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/Lib/fractions.py b/Lib/fractions.py index 8593e7e..53ff785 100755 --- a/Lib/fractions.py +++ b/Lib/fractions.py @@ -106,39 +106,39 @@ class Fraction(Rational): self._denominator = int(denominator // g) return self - @staticmethod - def from_float(f): + @classmethod + def from_float(cls, f): """Converts a finite float to a rational number, exactly. Beware that Fraction.from_float(0.3) != Fraction(3, 10). """ if not isinstance(f, float): - raise TypeError("Fraction.from_float() only takes floats, " - "not %r (%s)" % (f, type(f).__name__)) + raise TypeError("%s.from_float() only takes floats, not %r (%s)" % + (cls.__name__, f, type(f).__name__)) if math.isnan(f) or math.isinf(f): - raise TypeError("Cannot convert %r to Fraction." % f) - return Fraction(*f.as_integer_ratio()) + raise TypeError("Cannot convert %r to %s." % (f, cls.__name__)) + return cls(*f.as_integer_ratio()) - @staticmethod - def from_decimal(dec): + @classmethod + def from_decimal(cls, dec): """Converts a finite Decimal instance to a rational number, exactly.""" from decimal import Decimal if not isinstance(dec, Decimal): raise TypeError( - "Fraction.from_decimal() only takes Decimals, not %r (%s)" % - (dec, type(dec).__name__)) + "%s.from_decimal() only takes Decimals, not %r (%s)" % + (cls.__name__, dec, type(dec).__name__)) if not dec.is_finite(): # Catches infinities and nans. - raise TypeError("Cannot convert %s to Fraction." % dec) + raise TypeError("Cannot convert %s to %s." % (dec, cls.__name__)) sign, digits, exp = dec.as_tuple() digits = int(''.join(map(str, digits))) if sign: digits = -digits if exp >= 0: - return Fraction(digits * 10 ** exp) + return cls(digits * 10 ** exp) else: - return Fraction(digits, 10 ** -exp) + return cls(digits, 10 ** -exp) def limit_denominator(self, max_denominator=1000000): """Closest Fraction to self with denominator at most max_denominator. |