2017-07-05 9 views
2

Für einen Stringliteral, sagen foo, wenn ich repr wollen würde, um es durch __repr__ dieser Zeichenfolge aufrufen, alles, was ich tun würde, ist:Warum benötigt das Drucken des __repr__ einer ganzen Zahl Klammern?

>>> 'foo'.__repr__() 
"'foo'" 

Dies funktioniert auch:

>>> ('foo').__repr__() 
"'foo'" 

es ist der gleiche Fall für float s:

>>> 1.0.__repr__() 
'1.0' 
>>> (1.0).__repr__() 
'1.0' 

Aber wenn es um Zahlen geht, ist es nicht ganz dasselbe. Der Versuch, __repr__ ohne erste Anwendung Klammer zu nennen wirft einen Fehler

>>> 1.__repr__() 
    File "<stdin>", line 1 
    1.__repr__() 
      ^
SyntaxError: invalid syntax 

Allerdings, wenn ich Klammern gelten, es funktioniert:

>>> (1).__repr__() 
'1' 

Also, warum nicht eine ganze Zahl erfordert die Klammer?

+0

weil 1. ist der float 1.0? um Verwirrung zu vermeiden? –

+0

Weil '1.' eine Gleitkommakonstante ist. – ForceBru

Antwort

3

Alternativ können Sie

1 .__repr__() 

Das Problem ist, dass 1. ist eine Fließkommazahl. Also musst du etwas zwischen dem 1 und dem . haben, entweder ein Leerzeichen oder eine Klammer.

+0

Oh cool .... das extra bisschen um zu umgehen war schön zu wissen. –

3

1.__repr__ Konflikte mit Fließkommaanalyse (ex: 1.0), so müssen Sie Klammern einfügen, um Python zu verstehen, dass der Punkt auf das Objekt 1 gilt.

+0

Ich suchte nach einem Dups! Ich denke, es ist nicht leicht, sie mit ihren Formulierungen zu finden. Danke für die Antwort. –

+0

Duplikate sind per se kein Problem, manchmal helfen sie sogar Leuten, Antworten mit völlig verschiedenen Schlüsselwörtern zu finden. Jetzt bin ich mir bewusst, dass das Duplikat existiert (oder hätte ich natürlich nicht geantwortet!) –

3

Einfach ein Leerzeichen vor dem Punkt:

>>> 1 .__repr__() 
'1' 

die wörtliche int 1 aus einem wörtlichen „teilweise“ schweben 1. eindeutig zu machen.

+0

Gibt es einen Tippfehler in Ihrer Antwort? :) Danke für die Information! –

+0

Ja, vielen Dank, dass Sie darauf hingewiesen haben. Dies war ein Copy-Paste-Fehler. Fest. –

Verwandte Themen