checking 'type' programmatically

Billy Earney billy.earney at
Fri Nov 20 16:06:09 CET 2009

Try looking at the function 'isinstance', so for example

if isinstance(obj, str):
	print "object is a string.."
elif isinstance(obj, int):
	print "object is an integer.." 

-----Original Message-----
From: at
[ at] On Behalf Of
Sent: Friday, November 20, 2009 4:10 AM
To: python-list at
Subject: checking 'type' programmatically

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?

Why do that: e.g. if documentation is incomplete, e.g. documentation on 
Popen.communicate() says "communicate() returns a tuple (stdoutdata, 
stderrdata)" but doesn't say what is the class of stdoutdata and 
stderrdata (a file object to read? a string?).



More information about the Python-list mailing list