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__
誤解を招く可能性があります。