2012-11-20 15 views
5

Sono repr e str identico Pythons incorporati tipi numerici (int, bool, float e complex), o ci sono (?) Esoteriche situazioni in cui i due possono produrre risultati diversi?Rep e str sono sempre identici su Python incorporati in tipi numerici?

domande correlate sul SO (come this one) si concentrano su come __repr__ e __str__ possono essere attuate in modo diverso, e restituire valori diversi per le stringhe, ma non riesco a trovare nulla sulla effettiva attuazione sui numeri.

+0

La domanda è stata chiusa come duplicata, ma il post collegato non risponde alla mia domanda, che riguarda specificamente i metodi '__repr__' e' __str__' su 'int',' bool', 'float' e' complex'. – gerrit

risposta

3

vostra fonte primaria di informazioni su questo è http://hg.python.org/cpython/file/tip/Objects Per esempio, in boolobject.c:

PyTypeObject PyBool_Type = { 
    ...stuff... 

    bool_repr,         /* tp_repr */ 

    ...stuff... 

    bool_repr,         /* tp_str */ 

quindi sì, sono garantiti per essere lo stesso.

Per i galleggianti, float_repr è diverso da float_str e dipende da sys.float_repr_style.