2017-06-25 7 views
0

、同じ名前を持つ変数は、モジュールのオブジェクトに割り当てられている別のpython-ファイルをインポートする場合:オブジェクトとしてアクティブなモジュールを取得する方法

>>> import somemodule 
>>> somemodule 
<module 'somemodule' from '/home/code/test/somemodule.py'> 

をしかし、どのようにあなたがオブジェクトとしてアクティブなモジュールを得るのですかsomemodule.py自体では、変数somemoduleと同じオブジェクトである必要があります。<stdin>

+0

あなたはそうする必要はありません。モジュール内では、グローバル変数を通じてモジュールオブジェクトの内容にアクセスできます。 – kindall

+0

私はそれを知っていますが、モジュールそのものを特定のオブジェクトを登録するためにあるモジュールオブジェクトを使って関数に渡すべきです。 – cmdLP

+0

'import sys print(sys.modules ['__ main __'])'は参照を返しますが、返されるオブジェクトがあなたの望むものかどうかはわかりません。 – PRMoureu

答えて

1

__name__から現在のモジュールの名前を取得できます。その名前は、package.moduleのようになります(ファイルがpackage/module.pyにあると仮定します)。

sys.modules内のモジュールにアクセスするには、その文字列を使用しますが、モジュールの読み込み中にこの文字列を使用したくないことに注意してください。モジュールの最外層レベルのコードが実行されている間、モジュール定義は依然としてフラックスの状態にあります。必ずしもすべてにアクセスできるとは限りません。

特定の例では、モジュールステートメントは上から下に実行されます。したがって、途中でモジュールにアクセスすると、アクセスの上に定義されている変数や関数はモジュール内にありますが、アクセスの下で定義されたものは実行されないため、モジュールにはまだ含まれません。うわー!

関連する問題