Seite 1 von 1

__name__ von int object

Verfasst: Sonntag 20. Oktober 2013, 15:52
von mutetella
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

Re: __name__ von int object

Verfasst: Sonntag 20. Oktober 2013, 15:57
von cofi
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__

Re: __name__ von int object

Verfasst: Sonntag 20. Oktober 2013, 16:27
von 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‽

Re: __name__ von int object

Verfasst: Sonntag 20. Oktober 2013, 16:32
von diesch

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'