組み込みモジュールを使用していくつかのインスタンスを挿入しているので、デバッグ目的でグローバルにアクセスできます。モジュールの問題__builtins__
は、それがメイン スクリプト内のモジュールであり、モジュール内の dict であることですが、場合によっては私のスクリプトがメイン スクリプトまたはモジュールになる可能性があるため、これを行う必要があります。
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
これより短い回避策はありますか?さらに重要なことに、なぜ は__builtins__
このように振る舞うのでしょうか?
これを確認するためのスクリプトを次に示します。モジュール a.py を作成します。
#module-a
import b
print 'a-builtin:',type(__builtins__)
モジュール b.py を作成します。
#module-b
print 'b-builtin:',type(__builtins__)
次に、python a.py を実行します。
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>