以下の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"
、ポイントセルフの正しい表現は何ですか?それは"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