2012-11-20 13 views
5

Sind repr und str identisch auf Pythons integrierte numerische Typen (int, bool, float und complex), oder gibt es (esoterisch?) Situationen, in denen die zwei unterschiedlichen Ergebnissen führen kann?Sind repr und str immer identisch auf Pythons eingebauten numerischen Typen?

Verwandte Fragen auf SO (wie this one) konzentrieren sich auf wie __repr__ und __str__ unterschiedlich umgesetzt werden und unterschiedliche Werte für Strings zurückgeben, aber ich kann nichts über die tatsächliche Umsetzung auf Zahlen finden.

+0

Die Frage wurde geschlossen, als ein Duplikat, aber der verknüpfte Beitrag beantwortet meine Frage, die speziell auf die '__repr__' und' __str__' Methoden auf 'int',' bool', 'float' und' komplex. – gerrit

Antwort

3

Ihre primäre Quelle für Informationen hierzu http://hg.python.org/cpython/file/tip/Objects Zum Beispiel in boolobject.c:

PyTypeObject PyBool_Type = { 
    ...stuff... 

    bool_repr,         /* tp_repr */ 

    ...stuff... 

    bool_repr,         /* tp_str */ 

also ja, sie garantiert die gleiche sein.

Bei Floats unterscheidet sich float_repr von float_str und ist abhängig von sys.float_repr_style.