2012-04-14 17 views
18

int.numerator y int.denominator son un misterio para mí.Python: ¿Por qué existen int.numerator y int.denominator?

help(int.numerator) estados:

el numerador de un número racional en términos más

Pero por lo que yo sé, int no es un número racional. Entonces, ¿por qué existen estas propiedades?

+3

¿Desde cuándo son números irracionales enteros? – Wes

Respuesta

16

Ver http://docs.python.org/library/numbers.html - int (numbers.Integral) es un subtipo de numbers.Rational.

>>> import numbers 
>>> isinstance(1337, numbers.Integral) 
True 
>>> isinstance(1337, numbers.Rational) 
True 
>>> issubclass(numbers.Integral, numbers.Rational) 
True 

El denominador de un int es siempre 1 mientras que su numerador es el valor en sí.

En PEP 3141 encontrará detalles sobre la implementación de los distintos tipos de número, p. Ej. probando el enunciado anterior:

@property 
def numerator(self): 
    """Integers are their own numerators.""" 
    return +self 

@property 
def denominator(self): 
    """Integers have a denominator of 1.""" 
    return 1 
+1

No creo que esta respuesta sea completamente correcta. Implica que, en general, las clases numéricas son idénticas a los tipos incorporados, que no es el caso. Una pregunta para discutir en ese sentido es: ¿por qué no flotar tiene numerador y denominador? –

Cuestiones relacionadas