Here is a full program.
""" List classes, methods, functions and function/method args
in a module
Created: Anand B Pillai
"""
from types import *
import inspect
def analyze_func(obj, method=False):
if method:
print 'Method: %s' % obj.__name__
else:
print 'Function: %s' % obj.__name__
arginfo = inspect.getargspec(obj)
args = arginfo[0]
argsvar = arginfo[1]
if args:
if args[0] == 'self':
print '\t%s is an instance method' % obj.__name__
args.pop(0)
print '\tMethod Arguments: %s' % ' '.join(args)
if arginfo[3]:
dl = len(arginfo[3])
al = len(args)
defargs = args[al-dl:al]
print 'Default arguments:',zip(defargs, arginfo[3])
if arginfo[1]:
print '\t Positional Args Param: %s' % arginfo[1]
if arginfo[2]:
print '\t Keyword Args Param: %s' % arginfo[2]
def analyze_klass(obj):
print 'Class: %s' % obj.__name__
for name in obj.__dict__:
item = getattr(obj, name)
if type(item) is MethodType:
analyze_func(item, True)
def classify(module):
print 'Module: %s' % module.__name__
for name in dir(module):
obj = getattr(module, name)
if type(obj) in (ClassType, TypeType):
analyze_klass(obj)
elif type(obj) is FunctionType:
analyze_func(obj)
if __name__ == "__main__":
import test
classify(test)
On Thu, Mar 13, 2008 at 2:59 PM, <[EMAIL PROTECTED]> wrote:
> In addition to all the nice tips provided earlier... my 0.2cents !
>
> If your module has doc strings then you can use something like:
>
> ~~~~~~~~~~~~~
> import os
> help(os)
> ~~~~~~~~~~~~~
>
> --
> seShadri
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Pradeep Kishore
> Gowda
> Sent: Thursday, March 13, 2008 2:41 PM
> To: Bangalore Python Users Group - India
> Subject: Re: [BangPypers] Finding methods in a python script
>
> Ah! i forgot about the function parameter list.. Will look into it.
>
> +Pradeep
>
> On 3/13/08, Pradeep Kishore Gowda <[EMAIL PROTECTED]> wrote:
> > On 3/13/08, Heshan Suriyaarachchi <[EMAIL PROTECTED]> wrote:
> > > Hi
> >
> > > I am talking about a scenario like this
> > >
> > > class A:
> > > def foo(var1,var2):
> > > return 'Hello'
> > > def echo():
> > > return 'testing'
> > >
> > >
> > > class B:
> > > def bar(car):
> > > val = car
> > > return car
> > >
> > > What I need is to find out the classes and the methods of each
> > class with > their parameters.
> > > i.e. class A
> > > foo(var,var)
> > > echo()
> > >
> > > when using dir() it does not show the methods and the method
> parameters .
> >
> >
> >
> > ## foo2.py
> > class A:
> > pass
> >
> > class ABC:
> > pass
> >
> > def foo():
> > return 'Hello'
> >
> > def bar():
> > return 899
> >
> > PI = 22/7
> >
> > ## print_methods.py
> > import types
> > import foo2
> >
> > # In python everything is available as a dict all = foo2.__dict__
> >
> > # run through the items and check whether they are classes are
> > functions for i in all.keys():
> > if type(all[i]) == types.ClassType:
> > print i, 'is a class'
> > elif type(all[i]) == types.FunctionType:
> > print i, 'is a function'
> >
> > # of course this gives only the top level functions and classes.
> >
> > # Traverse the Tree to get the classes and methods like you wanted.
> >
> > # Pradeep
> >
> >
> > --
> >
> > Home - http://btbytes.com
> > Heart - http://sampada.net
> > Yummy! - http://konkanirecipes.com
> >
>
>
> --
> Home - http://btbytes.com
> Heart - http://sampada.net
> Yummy! - http://konkanirecipes.com
> _______________________________________________
> BangPypers mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/bangpypers
> _______________________________________________
> BangPypers mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/bangpypers
>
--
-Anand
_______________________________________________
BangPypers mailing list
[email protected]
http://mail.python.org/mailman/listinfo/bangpypers