4
Pythonオブジェクトの元となるモジュールを取得したいとします。どちらモジュール名を取得する:x .__ module__対x .__クラス__.__ module__
x.__module__
と
x.__class__.__module__
が動作するように見えます。これらは完全に冗長ですか? 1つを別のものに優先させる何らかの理由はありますか?
Pythonオブジェクトの元となるモジュールを取得したいとします。どちらモジュール名を取得する:x .__ module__対x .__クラス__.__ module__
x.__module__
と
x.__class__.__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__
は誤解を招く可能性があります。