如何获取模块内部模块的引用?

时间:2009-11-04 21:42:33

标签: python self-reference

如何从该模块中获取对模块的引用?另外,如何获得对包含该模块的包的引用?

6 个答案:

答案 0 :(得分:186)

import sys
current_module = sys.modules[__name__]

答案 1 :(得分:15)

如果您在该模块中有一个类,则该类的__module__属性是该类的模块名称。因此,您可以通过sys.modules[klass.__module__]访问该模块。这也适用于功能。

答案 2 :(得分:10)

您可以使用__name__

获取当前模块的名称

模块参考可以在sys.modules字典中找到。

参见Python documentation

答案 3 :(得分:10)

另一种不导入sys模块的技术 - 可以说 - 取决于你的口味 - 更简单:

current_module = __import__(__name__)

请注意,没有导入。 Python只导入一次模块。

答案 4 :(得分:1)

你可以从外面传递它:

mymod.init(mymod)

不理想,但它适用于我目前的用例。

答案 5 :(得分:0)

根据@truppo's answerthis answer(和PEP366):

对“此” 模块 的引用:

import sys
this_mod = sys.modules[__name__]

对“此” 的引用:

import sys
this_pkg = sys.modules[__package__]

__package____name__是相同的,如果从顶部__init__.py