如何从该模块中获取对该模块的引用?另外,如何获得对包含该模块的包的引用?
问问题
70915 次
7 回答
240
import sys
current_module = sys.modules[__name__]
于 2009-11-04T21:45:59.567 回答
27
另一种技术,它不导入 sys 模块,可以说 - 取决于你的口味 - 更简单:
current_module = __import__(__name__)
请注意,没有导入。Python 只导入每个模块一次。
于 2017-07-28T17:00:19.860 回答
16
如果您在该模块中有一个类,则该类的__module__
属性是该类的模块名称。因此,您可以通过 访问该模块sys.modules[klass.__module__]
。这也适用于函数。
于 2009-11-04T21:46:01.497 回答
13
于 2009-11-04T21:46:41.597 回答
3
您可以从外部传入它:
mymod.init(mymod)
不理想,但它适用于我当前的用例。
于 2017-09-20T03:17:37.470 回答
3
根据@truppo 的回答和这个回答(和PEP366):
参考“this”模块:
import sys
this_mod = sys.modules[__name__]
参考“这个”包:
import sys
this_pkg = sys.modules[__package__]
__package__
__name__
如果从(顶部)开始,则相同__init__.py
于 2020-09-29T17:04:53.167 回答
-1
如果您只需要访问模块变量然后使用globals()['bzz']
(或者vars()['bzz']
如果它是模块级别)。
于 2021-11-19T11:54:18.687 回答