4
我想獲取Python對象所來自的模塊。無論獲取模塊名稱:x .__ module__ vs x .__ class __.__ module__
x.__module__
和
x.__class__.__module__
似乎工作。這些是完全多餘的嗎?有沒有什麼理由更喜歡一個人?
我想獲取Python對象所來自的模塊。無論獲取模塊名稱:x .__ module__ vs x .__ class __.__ module__
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__
可能會引起誤解。