私が持っているとしましょうB.py
import A
def F():
pass
def G():
pass
if __name__ == '__main__':
A.f()
そしてそれを実行すると、このようA.f
に定義された関数のリストを出力したいと思いますB.py
./B.py
['F', 'G']
問題は、何を書くべきかということA.py
です。
def f():
???
このようなことをするので可能だと思われますdoctest
。
更新ご回答ありがとうございますが、もう1つ制限事項について言及するのを忘れましimport B
たA.py
。
理由を説明してみましょう:A.py
MapReduceジョブを実行するためのライブラリです。スクリプトのさまざまな最後でいくつかをインポートA
して実行するだけです。A.f
次にA.f
、定義した関数を分析し、サーバー上で実行します。したがってA.f
、呼び出されたすべてのモジュールをインポートすることはできません。
それともできますか?関数はそれがどこから呼び出されたかを知ることができますか?
アップデート
def f():
module = sys.modules['__main__']
functions = inspect.getmembers(module, inspect.isfunction)
...