[pyar] Imprimir propiedades de una instancia de clase en forma recursiva y de forma humanamente legible

Mariano Garcia Berrotarán garcia.berrotaran en gmail.com
Dom Sep 9 19:10:43 ART 2012


Hola!,

Muy interesante el modulo, te tiro un par de ideas a ver que te parecen:

donde hace

>> return "%s>" % str(obj).replace('__main__.', '').split(' at ')[0]

podrias hacer:

>> return "%s>" % obj.__class__.__name__

y te evitas varias cosas, como castear el objeto a string o hacer
split al resultado.

Por otro lado, donde hace:

>>>   if str(value) == '':
>>>        return "''"
>>>    elif str(value).startswith('<__main__.'):
>>>        return get_human_object_name(value)
>>>    else:
>>>        return value

ejecuta la funcion get_human_object_name unicamente si el valor esta
definido en __main__, pero si le tiro una instancia de un objeto
importado desde otro modulo, esa comprobacion va a fallar. Supongo que
estas queriendo fijarte si el valor es algo que no sea tipo basico (o
parte de algunos tipos basicos). Eso lo podes hacer asi:

>>> type(value) in (str, int, float, long, set, list, tuple)

o cualquier lista de tipos que quieras chequear. Tambien podes usar un
isinstance(obj, type) para cada tipo de valor.


Saludos!
-- 
Mariano García Berrotarán



More information about the pyar mailing list