6

我想获取 Python 对象来自的模块。两个都

x.__module__

x.__class__.__module__

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

4

1 回答 1

13

如果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__可能会产生误导。

于 2011-03-11T09:43:03.727 回答