获取python包的所有功能

时间:2016-02-08 16:11:52

标签: python reflection packages inspect

我有一个多模块Python包,它有一个类MyClass的文件和几个带有函数的文件(一个文件可以包含多个函数)。

我试图获得此包中的所有功能。

首先,使用以下内容:

modules = []
for importer, module, ispkg in pkgutil.iter_modules(package.__path__):
    modules.extend(module)

但我只获得了模块名称,而不是模块对象。

当我尝试使用inspect.getmembers(module, inspect.isfunction)获取这些模块的功能时,我当然得到了一个空集合。

那么,如何从包中获取所有模块对象以进一步获取函数?

是否存在从多文件包获取所有函数的更简单方法?

P.S。我需要确切的function个对象,而不仅仅是他们的名字。

修改

  1. dir(package)只提供内置变量:

    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']

  2. inspect.getmembers(package, inspect.infunction)给出一个空的 列表以及每个module的相同代码,如上所述。

  3. dir(module)为我提供了所有可用方法的名单 str个对象(因为,iter_modules()仅提供名称 模块)。

  4. AST ......您确定没有更简单的解决方案吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

for importer, module, ispkg in pkgutil.iter_modules(package.__path__):
   print dir(__import__(module))