from types import BuiltinFunctionType, BuiltinMethodType, \
     FunctionType, MethodType, ClassType 

def help(object, spacing=10, collapse=1):
    """Print methods and doc strings.

    Takes module, class, list, dictionary, or string."""
    types = (BuiltinFunctionType, BuiltinMethodType, FunctionType, MethodType, ClassType)
    methodList = [e for e in dir(object) if type(getattr(object, e)) in types]
    processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
    print "\n".join(["%s %s" %
                     (method.ljust(spacing),
                      processFunc(str(getattr(object, method).__doc__)))
                     for method in methodList])

if __name__ == "__main__":
    print help.__doc__
