__name__ von int object

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

innerhalb einer `__str__` Methode möchte ich ein `int` object als solches benennen. Bei allen möglichen Objekten ist das eigentlich kein Problem

Code: Alles auswählen

>>> ''.__class__.__name___
'str'
>>> None.__class__.__name__
'NoneType'
nur eben bei `int` geht das nicht

Code: Alles auswählen

>>> 0.__class__.__name__  File "<stdin>", line 1
    0.__class__.__name__
              ^
SyntaxError: invalid syntax
Geht das nur über einen solchen

Code: Alles auswählen

if isinstance(0, int):print 'int'
Umweg?

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich weiss gar nicht was du hast:

Code: Alles auswählen

In [4]: (0).__class__.__name__
Out[4]: 'int'
Zugegeben ..

Code: Alles auswählen

In [3]: 0.__class__.__name__
  File "<ipython-input-3-3584f8390526>", line 1
    0.__class__.__name__
BlackJack

Wobei ich das Problem nicht so ganz verstehe denn da wird im Code ja nicht wirklich eine literale 0 stehen sondern ein Name an den ein `int`-Wert gebunden ist, und dann besteht das Problem überhaupt nicht‽
Benutzeravatar
diesch
User
Beiträge: 80
Registriert: Dienstag 14. April 2009, 13:36
Wohnort: Brandenburg a.d. Havel
Kontaktdaten:

Code: Alles auswählen

0.__class__
geht nicht, weil der Parser bei 0. eine Gleitkomma-Zahl erwartet. Du musst daher z.B. mit Klammern deutlich machen, was gemeint ist.

Ich würde type() statt __class__ nehmen:

Code: Alles auswählen

>>> type(None).__name__
'NoneType'
>>> type(0).__name__
'int'
>>> type('').__name__
'str'
http://www.florian-diesch.de
Antworten