我想获取 Python 对象来自的模块。两个都
x.__module__
和
x.__class__.__module__
似乎工作。这些是完全多余的吗?有什么理由比另一个更喜欢一个吗?
我想获取 Python 对象来自的模块。两个都
x.__module__
和
x.__class__.__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__
可能会产生误导。