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 に答える