[英]How can A.f defined in module A get list of function defined in B if A.f was called from B
假设我有B.py
import A
def F():
pass
def G():
pass
if __name__ == '__main__':
A.f()
当我运行它时,我希望Af
这样输出B.py
定义的函数列表
./B.py
['F', 'G']
问题是我应该用A.py
写什么?
def f():
???
似乎有可能是因为doctest
做了这样的事情。
更新感谢您的答复,但我忘了再提一个限制:我不想在A.py
import B
让我尝试解释原因: A.py
是用于运行MapReduce作业的库。 您只需导入A
并在脚本的不同结尾处运行一些Af
。 然后Af
您定义的功能并在服务器上执行它们。 因此, Af
无法导入从其调用的每个模块。
可以吗 函数可以知道从哪里调用它吗?
更新
def f():
module = sys.modules['__main__']
functions = inspect.getmembers(module, inspect.isfunction)
...
def f():
import B
import inspect
functions=inspect.getmembers(B,inspect.isfunction)
http://docs.python.org/library/inspect.html#inspect.getmembers
编辑
我还没有尝试过,但是看来您可以将模块作为参数传递给f并使用它。
def f(mod):
import inspect
functions=inspect.getmembers(mod,inspect.isfunction)
return functions
然后,从B,您可以执行以下操作:
import sys
import A
myfuncs=A.f(sys.modules[__name__])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.