Find functions explicitly defined in a module (python)

后端 未结 5 1984
北恋
北恋 2020-12-03 04:48

Ok I know you can use the dir() method to list everything in a module, but is there any way to see only the functions that are defined in that module? For example, assume m

相关标签:
5条回答
  • 2020-12-03 05:27

    How about the following:

    grep ^def my_module.py
    
    0 讨论(0)
  • 2020-12-03 05:29

    the python inspect module is probably what you're looking for here.

    import inspect
    if inspect.ismethod(methodInQuestion):
        pass # It's a method
    
    0 讨论(0)
  • 2020-12-03 05:35

    Every class in python has a __module__ attribute. You can use its value to perform filtering. Take a look at example 6.14 in dive into python

    0 讨论(0)
  • 2020-12-03 05:41

    Are you looking for something like this?

    import sys, inspect
    
    def is_mod_function(mod, func):
        return inspect.isfunction(func) and inspect.getmodule(func) == mod
    
    def list_functions(mod):
        return [func.__name__ for func in mod.__dict__.itervalues() 
                if is_mod_function(mod, func)]
    
    
    print 'functions in current module:\n', list_functions(sys.modules[__name__])
    print 'functions in inspect module:\n', list_functions(inspect)
    

    EDIT: Changed variable names from 'meth' to 'func' to avoid confusion (we're dealing with functions, not methods, here).

    0 讨论(0)
  • 2020-12-03 05:48

    You can check __module__ attribute of the function in question. I say "function" because a method belongs to a class usually ;-).

    BTW, a class actually also has __module__ attribute.

    0 讨论(0)
提交回复
热议问题