Name of type of object

Steven Bethard steven.bethard at gmail.com
Wed Feb 9 03:34:00 EST 2005


Randall Smith wrote:
> Jive Dadson wrote:
> 
>> The traceback routine prints out stuff like,
>>
>>     NameError: global name 'foo' is not defined
>>
>> NameError is a standard exception type.
>>
>> What if I want to print out something like that?
>> I've determined that "global name 'foo' is not defined" comes from the 
>> __str__ member of the exception object.
>> Where does it find the string "NameError"?  In general, if I have an 
>> object, is there a way to obtain the name of the type of the object?
>>
>> Thankee.
> 
> type(object) ?

Doesn't work for old-style classes like exceptions:

py> e = NameError("global name 'foo' is not defined")
py> type(e)
<type 'instance'>
py> type(e).__name__
'instance'

For old-style classes, you'll need to go through __class__

py> e.__class__
<class exceptions.NameError at 0x00934900>
py> e.__class__.__name__
'NameError'

STeVe



More information about the Python-list mailing list