2013-07-12 16 views
5

Wir wissen, dass alles ein Objekt in Python ist und daher Ganzzahlen enthält. So ist dir(34) keine Überraschung, es gibt Attribute verfügbar.Ungültige Syntaxverwechslung bei Python-Ganzzahlen

Meine Verwirrung stammt aus dem folgenden, warum ist es so, dass 34.__class__ einen Syntaxfehler gibt, wenn ich weiß, dass 34 hat das Attribut __class__. Warum verbinde ich eine Ganzzahl mit einem Namen, zB x, und mache dann x.__class__ meine erwartete Antwort vom Typ int?

+0

. wird für den Dezimalpunkt verwendet. Du kannst auch '34()' nicht machen. – dansalmo

Antwort

12

Weil 34.__class__ keine gültige Fließkommazahl ist, was die . in einem numerischen Literal bezeichnet. Versuchen Sie (34).__class__.

+1

Oh doh. Also ist die '.' die Syntax, die Python sagt, wenn eine Zahl ein Float oder ein Int ist? Vielen Dank! –

+0

Ja, es ist ein Dezimalpunkt, wenn mit einer Zahl verwendet wird. – kindall

+1

Beachten Sie auch, dass '1.e3' ein perfekt gültiges Float-Literal ist; wie konntest du das vom Mitglied 'e3' von int '1' unterscheiden, wenn beide erlaubt wären? – abarnert

Verwandte Themen