--- Lib/fractions.py 2014-08-22 18:59:30.623831217 +0200 +++ Lib/fractions.py 2014-09-22 20:53:50.524802173 +0200 @@ -104,7 +104,12 @@ self = super(Fraction, cls).__new__(cls) if denominator is None: - if isinstance(numerator, numbers.Rational): + if type(numerator) is int: + self._numerator = numerator + self._denominator = 1 + return self + + elif isinstance(numerator, numbers.Rational): self._numerator = numerator.numerator self._denominator = numerator.denominator return self @@ -153,6 +158,9 @@ raise TypeError("argument should be a string " "or a Rational instance") + elif type(numerator) is int and type(denominator) is int: + pass # *very* normal case + elif (isinstance(numerator, numbers.Rational) and isinstance(denominator, numbers.Rational)): numerator, denominator = (