我该如何在模块内部获取对该模块的引用?此外,我如何获取包含该模块的包的引用?
我该如何在模块内部获取对该模块的引用?此外,我如何获取包含该模块的包的引用?
import sys
current_module = sys.modules[__name__]
还有一种技术,不需要导入sys模块,并且根据你的口味可以认为更简单:
current_module = __import__(__name__)
请注意,Python 中不存在导入重复的情况。每个模块只会被导入一次。
如果该模块中有一个类,则该类的 __module__
属性是该类所在的模块名称。因此,您可以通过 sys.modules [klass.__module__]
访问该模块。这对于函数也适用。
import sys
this_mod = sys.modules[__name__]
对 "this" 包 的引用:
import sys
this_pkg = sys.modules[__package__]
__package__
和__name__
如果来自(顶层)的__init__.py
文件,则相同。
你可以从外部传递它:
mymod.init(mymod)
虽然不是理想情况,但对于我目前的使用场景来说可行。
globals()['bzz']
(如果是模块级别,请使用vars()['bzz']
)。
from importlib import import_module
current_module = import_module(__name__)
附注:还可以参考Sargera的评论