获取模块名称: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语言中'__module__'的作用是啥,求详解