【发布时间】:2018-08-14 19:59:05
【问题描述】:
给定一个类或函数,有没有办法找到它最初定义的模块的完整路径? (即使用def xxx 或class xxx。)
我知道有sys.modules[func.__module__]。但是,如果 func 被导入到包的 __init__.py 中,那么 sys.modules 将简单地重定向到该 __init__.py,因为据我所知,该函数已被带入该命名空间。
一个具体的例子:
>>> import numpy as np
>>> import sys
>>> np.broadcast.__module__
'numpy'
>>> sys.modules[np.broadcast.__module__]
<module 'numpy' from '/Users/brad/.../site-packages/numpy/__init__.py'>
显然,broadcast 没有在__init__.py 中定义;它只是通过 these from module import * 语句之一被带入命名空间。
很高兴看到源代码np.broadcast 的定义位置(无论文件扩展名是什么,无论是.c 还是.py)。这可能吗?
【问题讨论】:
标签: python python-import