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

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

x.__module__

x.__class__.__module__

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

【问题讨论】:

  • This answer 解释对象__module__ 是如何从__module__ 类创建的。

标签: python module python-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__ 可能会产生误导。

【讨论】:

    猜你喜欢
    • 2012-04-24
    • 2022-01-11
    • 2018-07-08
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多