Introspection 101
#!/usr/bin/env python
#-*- encoding: utf8 -*-
#
# [SNIPPET_NAME: Introspection 101]
# [SNIPPET_CATEGORIES: Python Core]
# [SNIPPET_DESCRIPTION: Quick example of Python introspection capabilities]
# [SNIPPET_AUTHOR: Gonzalo Núñez <[email protected]>]
# [SNIPPET_LICENSE: GPL]
import types
import sys
import os
def query( item ):
''' Retrieve all attributes from the given element <item> and display their name and docstring.'''
if None == item:
return
itemDir = dir( item )
item_name = item.__name__
for elem in itemDir:
element_name = str(elem)
elment_doc = ''
#
# Get the element
# this is equivalent to writing: 'element = item.<the value of elem>' (eg. if elem = '__doc__', item.__doc__)
#
element = getattr( item, elem )
#
# if element has a __name__ attribute, get it and store it in element_name
# this is equivalent to writing: 'element_name = element.__name__'
#
if hasattr( element, '__name__' ):
element_name = getattr( element, '__name__' )
element_name = element.__name__
#
# if element has a __doc__ attribute, get it and store it in element_doc
#
if hasattr( element, '__doc__' ):
element_doc = element.__doc__
print
print "%s.%s [%s]\n\n%s" %( item_name, element_name, type( elem ), element_doc )
print
print
query( os )