获取模块名称:x.__module__ vs x.__class__.__module__

Posted

技术标签:

【中文标题】获取模块名称:x.__module__ vs x.__class__.__module__【英文标题】:Obtaining module name: x.__module__ vs x.__class__.__module__ 【发布时间】:2011-07-13 08:51:19 【问题描述】:

我想获取 Python 对象所在的模块。两者都有

x.__module__

x.__class__.__module__

似乎有效。这些是完全多余的吗?有什么理由比另一个更喜欢一个吗?

【问题讨论】:

This answer 解释对象__module__ 是如何从__module__ 类创建的。 【参考方案1】:

如果x 是一个类,那么x.__module__x.__class__.__module__ 会给你不同的东西:

# (Python 3 sample; use 'class Example(object): pass' for Python 2)
>>> class Example: pass

>>> Example.__module__
'__main__'
>>> Example.__class__.__module__
'builtins'

对于没有直接定义__module__ 的实例,将使用类中的属性。

>>> Example().__module__
'__main__'

我认为您需要明确您真正想了解的模块。如果它是包含类定义的模块,那么最好明确说明,所以我会使用x.__class__.__module__。实例通常不会记录创建它们的模块,因此x.__module__ 可能会产生误导。

【讨论】:

以上是关于获取模块名称:x.__module__ vs x.__class__.__module__的主要内容,如果未能解决你的问题,请参考以下文章

windows10 vs2015编译 带nginx-rtmp-module 模块的32位nginx

导入模块:__main__ vs import as module

python_模块

菜鸟求问,python语言中'__module__'的作用是啥,求详解

python学习笔记011——内置函数__module____name__

模块(module)