我有一个多模块Python包,它有一个类MyClass
的文件和几个带有函数的文件(一个文件可以包含多个函数)。
我试图获得此包中的所有功能。
首先,使用以下内容:
modules = []
for importer, module, ispkg in pkgutil.iter_modules(package.__path__):
modules.extend(module)
但我只获得了模块名称,而不是模块对象。
当我尝试使用inspect.getmembers(module, inspect.isfunction)
获取这些模块的功能时,我当然得到了一个空集合。
那么,如何从包中获取所有模块对象以进一步获取函数?
是否存在从多文件包获取所有函数的更简单方法?
P.S。我需要确切的function
个对象,而不仅仅是他们的名字。
修改
dir(package)
只提供内置变量:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
inspect.getmembers(package, inspect.infunction)
给出一个空的
列表以及每个module
的相同代码,如上所述。
dir(module)
为我提供了所有可用方法的名单
str
个对象(因为,iter_modules()
仅提供名称
模块)。
AST ......您确定没有更简单的解决方案吗?
答案 0 :(得分:1)
试试这个:
for importer, module, ispkg in pkgutil.iter_modules(package.__path__):
print dir(__import__(module))