从python目录中获取所有模块名称,类名称和方法名称

迈克786

如果一个目录包含多个.py文件,例如a.py,b.py,c.py我如何获取该目录中包含的所有模块名称及其类名称,以及最终所有相应类的方法名称

春分93

要过滤目录中的文件,可以使用('。'指向当前目录):

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

从名称中调用python方法名称

来自分类Dev

BCEL-获取类名称,元素名称和方法名称

来自分类Dev

BCEL-获取类名称,元素名称和方法名称

来自分类Dev

从AOP调用类获取方法名称和参数

来自分类Dev

获取所有服务合同方法名称

来自分类Dev

获取所有服务合同方法名称

来自分类Dev

将PostSharp方面应用于类中的所有方法以记录方法名称

来自分类Dev

Monolog,日志类和方法名称

来自分类Dev

如何获取脚本中使用的所有变量和方法名称

来自分类Dev

类中的动态方法名称?

来自分类Dev

Python类中的方法名称空间/集合

来自分类Dev

如何在Python中获取类的类方法的所有名称

来自分类Dev

方法名称相同,但类名称不同

来自分类Dev

更改类名称,方法名称并导出

来自分类Dev

我可以在 After Test 调用中获取 @Test 的变量名称和方法名称吗?

来自分类Dev

登录-获取方法名称

来自分类Dev

Python中测试方法名称的约定

来自分类Dev

Swift中的方法名称

来自分类Dev

TypeScript中的方法名称

来自分类Dev

在zf2中获取所有模块名称

来自分类Dev

在zf2中获取所有模块名称

来自分类Dev

获取当前的类和方法名称是否会降低性能?

来自分类Dev

在类定义中的方法名称中明确使用`self`

来自分类Dev

模块名称和目录名称冲突?

来自分类Dev

从 C# 中的类中获取所有属性名称

来自分类Dev

如何使用proguard混淆除公共方法名称和属性以外的所有内容?

来自分类Dev

带有proguard的Kotlin AAR库:如何仅保留类和方法名称?

Related 相关文章

热门标签

归档