如何在模块本身内部获取对模块的引用?

发布于 2024-08-10 06:03:11 字数 41 浏览 7 评论 0原文

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

How can I get a reference to a module from within that module? Also, how can I get a reference to the package containing that module?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

中性美 2024-08-17 06:03:11
import sys
current_module = sys.modules[__name__]
import sys
current_module = sys.modules[__name__]
甚是思念 2024-08-17 06:03:11

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

current_module = __import__(__name__)

请注意没有导入。 Python 仅导入每个模块一次。

One more technique, which doesn't import the sys module, and arguably - depends on your taste - simpler:

current_module = __import__(__name__)

Be aware there is no import. Python imports each module only once.

爱给你人给你 2024-08-17 06:03:11

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

If you have a class in that module, then the __module__ property of the class is the module name of the class. Thus you can access the module via sys.modules[klass.__module__]. This is also works for functions.

天涯离梦残月幽梦 2024-08-17 06:03:11

您可以使用 __name__ 获取当前模块的名称。

模块引用可以在 sys.modules 字典中找到。

请参阅 Python 文档

You can get the name of the current module using __name__

The module reference can be found in the sys.modules dictionary.

See the Python documentation

烟火散人牵绊 2024-08-17 06:03:11

根据@truppo的回答这个答案(和PEP366):

参考“this”模块

import sys
this_mod = sys.modules[__name__]

对“this”的引用:

import sys
this_pkg = sys.modules[__package__]

如果来自(顶部)__init__.py

,则

__package____name__ 是相同的

According to @truppo's answer and this answer (and PEP366):

Reference to "this" module:

import sys
this_mod = sys.modules[__name__]

Reference to "this" package:

import sys
this_pkg = sys.modules[__package__]

__package__ and __name__ are the same if from a (top) __init__.py

也只是曾经 2024-08-17 06:03:11

您可以从外部传递它:

mymod.init(mymod)

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

You can pass it in from outside:

mymod.init(mymod)

Not ideal but it works for my current use-case.

要走就滚别墨迹 2024-08-17 06:03:11

如果您需要的只是访问模块变量,则使用 globals()['bzz'] (如果是模块级别,则使用 vars()['bzz'] ) 。

If all you need is to get access to module variable then use globals()['bzz'] (or vars()['bzz'] if it's module level).

青柠芒果 2024-08-17 06:03:11
from importlib import import_module
current_module = import_module(__name__)

PS:另请参阅 Sargera 的评论

from importlib import import_module
current_module = import_module(__name__)

PS: see also Sargera's comment

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文