checking 'type' programmatically

exarkun at exarkun at
Fri Nov 20 16:01:28 CET 2009

On 10:10 am, mrkafk at wrote:
>Disclaimer: this is for exploring and debugging only. Really.
>I can check type or __class__ in the interactive interpreter:
>Python 2.6.2 (r262:71600, Jun 16 2009, 16:49:04)
>[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
>Type "help", "copyright", "credits" or "license" for more information.
> >>> import subprocess
> >>> 
> >>> p
><subprocess.Popen object at 0xb7f2010c>
> >>> (so, se) = p.communicate()
> >>> so
> >>> se
> >>> so.__class__
><type 'str'>
> >>> type(so)
><type 'str'>
> >>> type(se)
><type 'str'>
>But when I do smth like this in code that is ran non-interactively (as 
>normal program):
>req.write('stderr type %s<br>' % type(se))
>req.write('stderr class %s<br>' % str(se.__class__))
>then I get empty output. WTF?
>How do I get the type or __class__ into some object that I can display?

Hooray for HTML.

You asked a browser to render "stderr type <type 'str'><br>".  This 
isn't valid HTML, so pretty much any behavior goes.  In this case, the 
browser seems to be discarding the entire <type 'str'> - not too 
suprising, as it has some features in common with an html tag.

Try properly quoting your output (perhaps by generating your html with a 
real html generation library).


More information about the Python-list mailing list