如何从该模块中获取对模块的引用?另外,如何获得对包含该模块的包的引用?
答案 0 :(得分:186)
import sys
current_module = sys.modules[__name__]
答案 1 :(得分:15)
如果您在该模块中有一个类,则该类的__module__
属性是该类的模块名称。因此,您可以通过sys.modules[klass.__module__]
访问该模块。这也适用于功能。
答案 2 :(得分:10)
答案 3 :(得分:10)
另一种不导入sys模块的技术 - 可以说 - 取决于你的口味 - 更简单:
current_module = __import__(__name__)
请注意,没有导入。 Python只导入一次模块。
答案 4 :(得分:1)
你可以从外面传递它:
mymod.init(mymod)
不理想,但它适用于我目前的用例。
答案 5 :(得分:0)
根据@truppo's answer和this answer(和PEP366):
对“此” 模块 的引用:
import sys
this_mod = sys.modules[__name__]
对“此” 包 的引用:
import sys
this_pkg = sys.modules[__package__]
__package__
和__name__
是相同的,如果从顶部__init__.py