如何在模块本身内部获取对模块的引用?
如何从模块内获取对该模块的引用?另外,如何获取包含该模块的包的引用?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
另一种技术不导入 sys 模块,并且可以说 - 取决于您的口味 - 更简单:
请注意没有导入。 Python 仅导入每个模块一次。
One more technique, which doesn't import the sys module, and arguably - depends on your taste - simpler:
Be aware there is no import. Python imports each module only once.
如果该模块中有一个类,则该类的 __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 viasys.modules[klass.__module__]
. This is also works for functions.您可以使用 __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
根据@truppo的回答和这个答案(和PEP366):
参考“this”模块:
对“this”包的引用:
According to @truppo's answer and this answer (and PEP366):
Reference to "this" module:
Reference to "this" package:
您可以从外部传递它:
不太理想,但它适用于我当前的用例。
You can pass it in from outside:
Not ideal but it works for my current use-case.
如果您需要的只是访问模块变量,则使用
globals()['bzz']
(如果是模块级别,则使用vars()['bzz']
) 。If all you need is to get access to module variable then use
globals()['bzz']
(orvars()['bzz']
if it's module level).PS:另请参阅 Sargera 的评论
PS: see also Sargera's comment