如果一个目录包含多个.py文件,例如a.py,b.py,c.py我如何获取该目录中包含的所有模块名称及其类名称,以及最终所有相应类的方法名称
要过滤目录中的文件,可以使用('。'指向当前目录):
from os import listdir,chdir
default_path = r'c:\dev\python'
modules = [ fl for fl in listdir(default_path) if fl.endswith('.py') ]
要获得我知道的类和方法,尽管不导入模块也无法使用它,但可以使用inspect:
例如
from inspect import getmembers, isfunction, ismethod, isclass
your_module = __import__(modules[0].split('.')[0])
class_funcs = {}
funcs = [ obj for obj in getmembers(your_module) if isfunction(obj[1]) ]
classes = [ obj for obj in getmembers(your_module) if isclass(obj[1]) ]
for cls in classes:
class_funcs[cls[0]] = [ obj for obj in getmembers(cls[1]) if ismethod(obj[1]) ]
print funcs
[('function1', <function your_module.function1>),
('function2', <function your_module.function2>)]
print class_funcs
{'ClassName': [('__init__', <unbound method ClassName.__init__>),
('Method_name', <unbound method ClassName.Method_name>)]}
这将为您提供模块中的所有函数,类,类方法。
如果您不想导入模块,那么我不熟悉获取方法的方法(除了读取文件和使用正则表达式等)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句