【发布时间】:2011-07-13 08:51:19
【问题描述】:
我想获取 Python 对象所在的模块。两者都有
x.__module__
和
x.__class__.__module__
似乎有效。这些是完全多余的吗?有什么理由比另一个更喜欢一个吗?
【问题讨论】:
-
This answer 解释对象
__module__是如何从__module__类创建的。
标签: python module python-module
我想获取 Python 对象所在的模块。两者都有
x.__module__
和
x.__class__.__module__
似乎有效。这些是完全多余的吗?有什么理由比另一个更喜欢一个吗?
【问题讨论】:
__module__ 是如何从__module__ 类创建的。
标签: python module python-module
如果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__ 可能会产生误导。
【讨论】: