[pyar] cannot concatenate 'str' and 'NoneType' objects

Claudio Freire klaussfreire en gmail.com
Vie Feb 15 16:52:17 ART 2013


2013/2/15 Roberto Alsina <ralsina en netmanagers.com.ar>:
> On 15/02/13 16:35, Claudio Freire wrote:
>> 2013/2/15 Roberto Alsina <ralsina en netmanagers.com.ar>:
>>> Y hacer lo correcto:
>>>
>>> logger.info("Mi cadenita %r" % aValue)
>>>
>>> o usar un formato.
>> Me parece que querés decir:
>>
>> logger.info("Mi cadenita %r", aValue)
>
> se'gual (en cuanto al resultado final)


Para nada.

Invocar al operador de formato así, puede romper:

>>> aValue = (2,3)
>>> "Mi cadenita %r" % aValue
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting

Se puede arreglar:

>>> aValue = (2,3)
>>> "Mi cadenita %r" % (aValue,)
'Mi cadenita (2, 3)'

Pero también puede romper, si repr(aValue) rompe:


>>> class ClaseMuyChota:
...    def __repr__(self):
...       raise ValueError, "Ja!"
...
>>> aValue = ClaseMuyChota()
>>> logging.info("Mi cadenita %r" % (aValue,))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __repr__
ValueError: Ja!
>>>

Como DEBE usarse logging, no rompe (y una aplicación NUNCA tiene que
romper sólo porque quiere loguear):

>>> logging.info("Mi cadenita %r", aValue)
>>>



More information about the pyar mailing list