[Python-de] auf Variablen zugreifen?

Hartmut Goebel h.goebel at goebel-consult.de
Mit Jul 20 10:21:21 CEST 2005


Hallo,

Diez B. Roggisch schrieb:

>> Sicher? Hab grad folgendes im Interpreter getestet und es ging:
>>
>> var=4
>> neueVar="(%s)" % var
>> print neueVar
>>
>> liefert "(4)"
>>
>> Ich denke im Gegensatz zum einfachen Verketten von Strings, wendet die
>> Substitution durchaus str() auf die Variablen an.
> 
> 
> Mag sein das ich da etwas generalisiert habe. Das hier geht nämlich nicht
> 
>>>> "%i" % "5"
> TypeError: int argument required
> 
> Und str() kann ja auch uU nicht sein, was man wirklich haben möchte.

Tja, etwas Theorie und das Lesen Handbuchs machen das Leben klarer :-)

'%s'  String (converts any python object using str())
'%r'  String (converts any python object using repr())
'%i'  Signed integer decimal.

Damit sollte klar sein, weshalb
  '%s'% 4
funktioniert und
  '%i' % "4"
eben nicht.

Aber das geht auch: Eine Klasse, die __int__ unterstützt.

>>> class I:
...     def __init__(self, attr):
...         self.attr = attr
...     def __int__(self):
...         return int(self.attr)
...
>>> print '%i' % I("4")
4
>>>


-- 
Schönen Gruß - Regards
Hartmut Goebel

| Hartmut Goebel             | IT-Security -- effizient |
| h.goebel at goebel-consult.de | www.goebel-consult.de    |