2012-04-14 10 views
18

int.numerator e int.denominator sono un mistero per me.Python: perché esistono int.numerator e int.denominator?

help(int.numerator) stati:

il numeratore di un numero razionale, in termini più bassi

Ma per quanto ne so, int non è un numero razionale. Quindi perché esistono queste proprietà?

+3

Da quando numeri interi sono numeri irrazionali? – Wes

risposta

16

Vedere http://docs.python.org/library/numbers.html - int (numbers.Integral) è un sottotipo di numbers.Rational.

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

Il denominatore di un int è sempre 1 mentre il numeratore è il valore stesso.

In PEP 3141 si trovano dettagli sull'implementazione dei vari tipi di numeri, ad es. dimostrando la dichiarazione precedente:

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

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

Non penso che questa risposta sia completamente corretta. Ciò implica che, in generale, le classi numerali sono identiche ai tipi built-in, il che non è il caso. Una domanda da discutere in questo senso è la seguente: Perché il float non ha numeratore e denominatore? –

Problemi correlati