假设我有以下 python 文件结构:
\function_group
|-__init__.py
|-sub_function1
|----|__init__.py
|----|sub_sub_func1.py
|----|sub_sub_func2.py
|----|sub_sub_func3.py
|-sub_function2
|----|__init__.py
|----|sub_sub_func1.py
|----|sub_sub_func2.py
|----|sub_sub_func3.py
在每个sub_sub_funcX.py
函数列表中都会收集所有函数名sub_sub_funcX.py
,
# sub_sub_funcX.py
# and each sub_sub_funcX.py file has similiar code
import inspect
functions = inspect.getmembers(self?, inspect.isfunction) # how to write the "self" here
def bar(x, y):
return x * y
def bar1(x, y):
return x + y
我的问题是
在上面标记的代码上
"# how"
,点 self 的正确表达是什么?它应该是一个"sub_sub_funcX"
吗?导入顶级模块时如何获得所有这些[功能]的完整列表
function_group
?我的意思是每个 sub_function 模块是否有可能在导入时以某种方式将其功能列表报告到顶部?有没有一种方法可以轻松扩展模块而无需添加内务代码,
__init__
只需简单挂钩和易于删除?例如,我稍后更改这样的结构:
\function_group
|-__init__.py
|-sub_function1
|----|__init__.py
|----|sub_sub_func1.py
|----|sub_sub_func2.py
|----|sub_sub_func3.py
|-sub_function2
|----|__init__.py
|----|sub_sub_func1.py
|----|sub_sub_func2.py
|----|sub_sub_func3.py
|----|sub_sub_func4.py # new added
|-sub_function3 # new added
|----|__init__.py # new added
|----|sub_sub_func1.py # new added
|----|sub_sub_sub_function_31 # new sub added
|--------|__init__.py # new added
|--------|sub_sub_sub_sub_func1.py# new added